仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 607|回复: 9
打印 上一主题 下一主题

[学习教程] PHP网页编程之php计划形式 ― 制作者形式

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:10:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度需求剖析:我们接到了一个定单,是宝马公司和奔腾公司的,他们卖力界说产物的零部件和型号,我们卖力临盆,需求复杂的形貌就是如许。我们必要为这个需求计划一个计划形式往更好的顺应他们的需求。起首我们必要一个车模子类,来界说好必要的一切零部件,这就叫做笼统类,之以是如许是由于我们另有大概接到更多公司的定单,好比劳斯莱斯,宾利。然后由各自的车来承继这个笼统类,完成内里的办法。接上去就必要一个制作者笼统类,来界说制作各自的车必要的办法然后由各自车制作者来承继这个笼统类。我们会想到一个制作形式了,不错,就是制作者形式。用它几乎太符合了。看一下制作者的用例图请注重:此图示例办法部分和我的示例对不上哦。间接上代码:复制代码1<?php23abstractclasscarModel{45//这里存储一切组卸车必要的零件6public$spareParts=array();78//车的名字9public$carName="";1011//增添轮子部件12publicabstractfunctionaddLunzi($xinghao);1314//增添外壳部件15publicabstractfunctionaddWaike($xinghao);1617//增添动员机部件18publicabstractfunctionaddFadongji($xinghao);1920//猎取车,并给车取名字21finalpublicfunctiongetCar($carName){22if($this->spareParts){23$this->carName=$carName;24//$k代表部件名字25//$v代表型号26foreach($this->sparePartsas$k=>$v){27$actionName="add".$k;28$this->$actionName($v);29}30}else{31thrownewException("没有汽车部件");3233}34}35}363738//界说详细的产物39classbmwCarModelextendscarModel{4041public$spareParts=array();42public$carName="";4344publicfunctionaddLunzi($xinghao){45echo"宝马".$this->carName."的轮子,型号是".$xinghao."
";46}4748publicfunctionaddWaike($xinghao){49echo"宝马".$this->carName."的外壳,型号是".$xinghao."
";50}5152publicfunctionaddFadongji($xinghao){53echo"宝马".$this->carName."的动员机,型号是".$xinghao."
";54}55}565758//界说详细的产物59classbenziCarModelextendscarModel{6061public$spareParts=array();62public$carName="";6364publicfunctionaddLunzi($xinghao){65echo"奔腾".$this->carName."的轮子,型号是".$xinghao."
";66}6768publicfunctionaddWaike($xinghao){69echo"奔腾".$this->carName."的外壳,型号是".$xinghao."
";70}7172publicfunctionaddFadongji($xinghao){73echo"奔腾".$this->carName."的动员机,型号是".$xinghao."
";74}75}76777879//界说制作者80abstractclasscarBuilder{81publicabstractfunctionsetSpareParts($partsName,$xinghao);8283publicabstractfunctiongetCarModel($name);84}858687classbmwBuilderextendscarBuilder{88private$bmwModel;8990publicfunction__construct(){91$this->bmwModel=newbmwCarModel();92}9394publicfunctionsetSpareParts($partsName,$xinghao){95$this->bmwModel->spareParts[$partsName]=$xinghao;96}9798publicfunctiongetCarModel($name){99$this->bmwModel->getCar($name);100}101}102103104classbenziBuilderextendscarBuilder{105private$benziModel;106107publicfunction__construct(){108$this->benziModel=newbenziCarModel();109}110111publicfunctionsetSpareParts($partsName,$xinghao){112$this->bmwModel->spareParts[$partsName]=$xinghao;113}114115publicfunctiongetCarModel($name){116$this->bmwModel->getCar($name);117}118}119120121122//摹拟客户端挪用123124//创立一辆宝马车,取名字为宝马x1125126$bmwBuilder=newbmwBuilder();127$bmwBuilder->setSpareParts(Lunzi,牛逼轮子1号);128$bmwBuilder->setSpareParts(Waike,牛逼外壳1号);129$bmwBuilder->setSpareParts(Fadongji,牛逼动员机1号);130$bmwBuilder->getCarModel("宝马x1");131$bmwBuilder->getCarModel("宝马x1");//一连创立两个宝马x1132133//再创立一个宝马没有外壳取名为宝马s5134$bmwBuilder=newbmwBuilder();135$bmwBuilder->setSpareParts(Lunzi,牛逼轮子2号);136$bmwBuilder->setSpareParts(Fadongji,牛逼动员机2号);137$bmwBuilder->getCarModel("宝马s5");138$bmwBuilder->getCarModel("宝马s5");//一连创立两个宝马x1复制代码代码能够间接运转,你能够试着往临盆一辆牛逼的奔腾车哦。制作者形式的界说制作者形式(BuilderPattern)也叫做天生器形式,其界说以下:Separatetheconstructionofacomplexobjectfromitsrepresentationsothatthesameconstructionprocesscancreatedifferentrepresentations.将一个庞大工具的构建与它的暗示分别,使得一样的构建历程能够创立分歧的暗示。制作者形式的通用类图如图所示。clip_image008在制作者形式中,有以下四个脚色:Product产物类一般是完成了模板办法形式,也就是有模板办法和基础办法,这个参考上一章节的模板办法形式。在例子中,BenzModel和BMWModel就属于产物类。Builder笼统制作者标准产物的组建,通常为由子类完成。在例子中,CarBuilder属于笼统制作者。ConcreteBuilder详细制作者完成笼统类界说的一切办法,而且前往一个组件好的工具。在例子中,BenzBuilder和BMWBuilder就属于详细制作者。Director导演卖力布置已有模块的按次,然后告知Builder入手下手制作,在下面的例子中就是我们的老迈,牛叉公司找到老迈,说我要这个,这个,谁人范例的车辆模子,然后老迈就把命令传送给我,我和我的团队就入手下手冒死的制作,因而一个项目建立终了了。PHP于1994年由RasmusLerdorf创建,刚刚开始是RasmusLerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-17 21:45:43 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
再见西城 该用户已被删除
板凳
发表于 2015-1-21 09:37:48 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
若相依 该用户已被删除
地板
发表于 2015-1-30 13:56:34 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
若天明 该用户已被删除
5#
发表于 2015-2-6 13:11:44 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
再现理想 该用户已被删除
6#
发表于 2015-2-16 06:56:43 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
活着的死人 该用户已被删除
7#
发表于 2015-3-5 01:05:47 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
蒙在股里 该用户已被删除
8#
发表于 2015-3-11 22:16:05 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
只想知道 该用户已被删除
9#
发表于 2015-3-19 15:12:01 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
第二个灵魂 该用户已被删除
10#
发表于 2015-3-28 21:35:24 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 13:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表