摘要:该文章属于编程中的那些经典套路设计模式汇总系列,并且以下内容基于语言前面我们写了简单工厂模式,编程中的那些套路关于简单工厂模式,但简单工厂模式有一些不足违反开放封闭原则,所以需要设计出一套更加规范的设计模式。
该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP
前面我们写了简单工厂模式,《编程中的那些套路——关于简单工厂模式》,但简单工厂模式有一些不足(违反开放封闭原则),所以需要设计出一套更加规范的设计模式。
工厂模式就在这个情形下产生了。
此处以数据库的选择为例子:
工厂模式算是对简单工厂模式的一次升级,新增了一个工厂类接口(factory)。### 简单工厂可没有
通过对代码的解耦生成了多个数据库工厂类,这些数据库工厂分别对应着一个实际的数据库功能类,外界通过调用不同的工厂从而使用不同的类 。
###简单工厂只有一个client类,具体选择哪一个数据库类是通过 switch ($type) {case’condition’: } 代码判断的,如果需要新增数据库或者减少数据库的话,需要直接改写好了的代码,也就是在这里违反了开闭原则。*
看看代码应该会清晰很多。
工厂模式.php
realWork(); } } //对外展示的Oracle工厂类 class FacOracle implements factory{ protected static $database; public function facWorking(){ self::$database = new Oracle(); return self::$database->realWork(); } } //对外展示的NoSQL工厂类 class FacNosql implements factory{ protected static $database; public function facWorking(){ self::$database = new Nosql(); return self::$database->realWork(); } } //现在我想实现MySQL数据库的功能,但是我只需要调用MySQL的工厂类即可,我无法并且也没必要知道,实际类和方法的名字 $db = new facMysql(); print_r($db->facWorking()); //output:开始使用MySQL ?>
外部调用的时候,只需要选择自己所需要的数据库工厂即可,该工厂会去调用真实数据库处理方法,然后返回你想要的结果。
而当你想要更换数据库的时候就很简单了,只需要把 $db = new FacMysql();换成其他的数据库工厂就行了,想要Oracle数据库的话就换成FacOracle()。
当然如果你看不懂工厂模式的话,那么你可以再看看简单工厂模式,有助于你的理解
编程中的那些套路——关于简单工厂模式
该文章属于《编程中的那些经典套路——设计模式汇总》系列
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/21672.html
摘要:简单工厂模式就是遵循了这一原则,它让不同职责的类各司其职。重点来了,简单工厂模式的不足但是简单工厂模式有一个不足,虽然它遵循了单一职责原则,但它违反了另一条同样很重要的原则开放封闭原则。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 面向对象五大原则中有一点非常重要的原则:单一职责原则。 简单工厂模式就是遵循了这一原则,它让不同职责的类各司其职。 ...
该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 今天讲讲策略模式,策略模式 和工厂模式十分相像(或者说在代码逻辑层面,他们是一样的)。 但策略模式与工厂模式有一点很重要的区别: 工厂模式:我们着眼于得到对象,并操作对象, 策略模式:我们着重得到对象某方法的运行结果 看代码 根据不同的情况使用不同的策略,即策略模式,与工厂模式确实很像,但他确确实实不是...
该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 在设计模式中,单例模式和工厂模式)可以说是使用的最普遍的设计模式了,所以掌握此种模式尤为重要。 单例模式一般使用在资源共享和需要控制资源的情况下。 例如:购物车,回收站,数据库连接池,计数器,配置文件共享等所有项目中只需要存在一个的模块,你都可以采用单例模式。 单例模式的好处就在于当前进程只产生一个对象(或者叫...
摘要:我们应该写一段拓展性强与维护性较强的代码,由此衍生出观察者模式。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 今天我们来谈谈观察者模式,这是一个经常用到的设计模式。 让我们想象一个场景:一个网站有不同等级区域的用户,不同等级的的用户登录后可以获得对应的服务(一级用户登录后获得一级服务,二级用户登录后获得二级服务,…以此类推)。那么我们如何写这段业...
摘要:如果看不懂的话,可以在评论区中提问,我会第一时间回答你无论何时我一直都在嗯哼该文章属于编程中的那些经典套路设计模式汇总系列 在正式阅读前,我先谈谈我们该用什么姿势和心态学习设计模式: 如果你还没有过多的编程经验(泛指半年以下),我建议你把它当做小说来看,能看懂多少是多少,因为半年以下经验的程序员用到设计模式的情况只会出现在面试上,至于实际工作中?相对来说这部分不会由你负责。 如果你已...
阅读 1265·2021-11-17 09:33
阅读 1732·2021-09-09 11:53
阅读 3183·2021-09-04 16:45
阅读 1362·2021-08-17 10:12
阅读 2369·2019-08-30 15:55
阅读 1772·2019-08-30 15:53
阅读 2399·2019-08-30 15:52
阅读 2551·2019-08-29 18:41