网站大量收购闲置独家精品文档,联系QQ:2885784924

PHP中简单工厂模式的学习笔记.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PHP中简单工厂模式的学习笔记

PHP中简单工厂模式的学习笔记工厂模式在php中是什么模式呢,对于这个我们对于php初学者可能不会明白了,下面小编给各位整理一个关于PHP中简单工厂模式实例讲解了,其实中也整理了一些其它的实例来进行补充了。简单工厂模式:①抽象基类:类中定义抽象一些方法,用以在子类中实现②继承自抽象基类的子类:实现基类中的抽象方法③工厂类:用以实例化对象使用工厂模式的目的或目标?工厂模式的最大优点在于创建对象上面,就是把创建对象的过程封装起来,这样随时可以产生一个新的对象。减少代码进行复制粘帖,耦合关系重,牵一发动其他部分代码。通俗的说,以前创建一个对象要使用new,现在把这个过程封装起来了。假设不使用工厂模式:那么很多地方调用类a,代码就会这样子创建一个实例:new a(),假设某天需要把a类的名称修改,意味着很多调用的代码都要修改。工厂模式的优点就在创建对象上。工厂模式的优点就在创建对象上。建立一个工厂(一个函数或一个类方法)来制造新的对象,它的任务就是把对象的创建过程都封装起来,创建对象不是使用new的形式了。而是定义一个方法,用于创建对象实例。每个类可能会需要连接数据库。那么就将连接数据库封装在一个类中。以后在其他类中通过类名:为什么引入抽象的概念?想一想,在现实生活中,当我们无法确定某个具体的东西的时候,往往把一类东西归于抽象类别。工厂方法:比如你的工厂叫做“香烟工厂”,那么可以有“七匹狼工厂”“中华工厂”等,但是,这个工厂只生厂一种商品:香烟;抽象工厂:无法描述它到底生产什么产品,它生产很多类型的产品(所以抽象工厂就会生成子工厂)。你的工厂是综合型的,是生产“一系列”产品,而不是“一个”,比如:生产“香烟”,还有“啤酒”等。然后它也可以有派生出来的具体的工厂,但这些工厂都是生产这一系列产品,只是可能因为地域不一样,为了适应当地人口味,味道也不太一样。工厂模式:理解成只生成一种产品的工厂。比如生产香烟的。工厂方法:工厂的一种产品生产线 。比如键盘的生成过程。?别人会反驳:吃饱了没事干,一定要修改类名称呢?这个说不定。一般都不会去修改类名称。?其实工厂模式有很多变体,抓住精髓才是关键:只要是可以根据不同的参数生成不同的类实例,那么就符合工厂模式的设计思想。这样子让我联想到框架中经常会有负责生成具体类实例的方法供调用。看完文章再回头来看下这张图,效果会比较好?采用封装方式?php class Calc{ /** * 计算结果 * * @param int|float $num1 * @param int|float $num2 * @param string $operator * @return int|float */ public function calculate($num1,$num2,$operator){ try { $result=0; switch ($operator){ case +: $result= $num1+$num2; break; case -: $result= $num1-$num2; break; case *: $result= $num1*$num2; break; case /: if ($num2==0) { throw new Exception(除数不能为0); } $result= $num1/$num2; break; } return $result; }catch?(Exception $e){ echo 您输入有误:.$e-getMessage(); } } } $test=new Calc();//??? echo $test-calculate(2,3,+);//打印:5 echo $test-calculate(5,0,/);//打印:您输入有误:除数不能为0??优点:以上代码使用了面向对象的封装特性,只要有了include这个类,其他页面就可以随便使用了缺点:无法灵活的扩展和维护比如:想要增加一个“求余”运算,需要在switch语句块中添加一个分支语句,代码需要做如下改动?php class Calc{ public function calculate($num1,$num2,$operator){ try { $result=0; switch ($operator){ //......省略...... case %: $result= $num1%$num2; break; //......省略...... } }catch (Exception $e){ echo 您输入有误:.$e-getMessage(); } } }?代码分析:用以上方法实现给计算器添加新的功能运算有以下几个缺点①需要改动原有的代码块,可能会在为了“添加新功能”而改动原有代码的时候,不小

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档