首页 » PHP教程 » phpsqliteclass技巧_设计模式之工厂模式

phpsqliteclass技巧_设计模式之工厂模式

访客 2024-12-06 0

扫一扫用手机浏览

文章目录 [+]

问题:在这里我们用数据库来举例。
当我们在项目中须要用到数据库的实例时,我们每次都要进行数据库的步骤(连接,关闭等),如果多次利用了,这就显得过程有点繁琐。
当某一天,我们要换其他的了,由原来的mysql换成了mysqli或者是pdo,那么,我们就须要把全体项目底朝天,进行之间每个的步骤的修正。
这不便于我们的掩护。

观点:工厂模式是我们最常用的实例化工具模式了,是用工厂方法代替new操作的一种模式。

phpsqliteclass技巧_设计模式之工厂模式

何时利用:我们明确的操持不同条件创建不同的实例时。
大略工厂:把它理解为一个模子,根据外界给定的材料,加上自身封装好的判断,生产出不同类型的相应的产品、工具。
仅在于方便管理。

phpsqliteclass技巧_设计模式之工厂模式
(图片来自网络侵删)

大略工厂模式:把它理解为一个模子,根据外界给定的质料,在加上自身封装好的判断,生产出不同类型的相应的产品、工具。

代码事例:

<?php class mysql{} class sqlite{} class Factory{ public static function getDB($type){ if ($type=='mysql') { return new mysql(); }else if($type=='sqlite'){ return new mysqli(); } } }print_r(Factory::getDB('mysql'));//结果:mysql Object()

对付大略工厂模型而言,彷佛如果我们须要增加相应的功能,就必须对类进行相应功能的添加。
但这彷佛不太符合面向工具中的开闭原则(该当对类的增加开放,对类的修正闭合)。
那么,抽象工厂类却能够实现这个过程。

抽象工厂(工厂方法):比较于大略工厂模式,没有逻辑判断,基类工厂去实现接口,子类工厂,子工厂去实现判断并能生产出相应功能的工具。

代码事例:

<?php class mysql{} class sqlite{} interface Factory{ public static function getDB(); } class mysqlFactory implements Factory{ public static function getDB(){ return new mysql(); } } class sqliteFactory implements Factory{ public static function getDB(){ return new sqlite(); } } class pdoFactory implements Factory{ public static function getDB(){ return new sqlite(); } } $db = mysqlFactory::getDB();var_dump($db);//结果:object(mysql)#1 (0){}

末了,喜好的小伙伴可以给我点赞或者是关注我哦。

标签:

相关文章