php设计模式之工厂模式

Posted 不倒的小草

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php设计模式之工厂模式相关的知识,希望对你有一定的参考价值。

最近一直很迷惑,设计模式到底是干嘛的,有什么用呢!所以专门花时间学习并整理了设计模式的好处等等!那今天先给大家一起分享下我所理解的设计模式--工厂模式!

  1. 先说说优点:
    1. 减少了工作量
    2. 方便扩展维护

  2. 再说说其实现方式:

      给2个类大家好好看一下,理解一下其内容: 

  3. 在这个类里,如果用户需要再添加一个数据库联接,比如oracle,是否需要修改Factory里的createDb的内容,这样的话,php还好,但如果在C/JAVA里,修改编译是
    需要很长时间的,所以这种方法对于开发的话,还是不太容易扩展。
    <?php /** * 简单工厂模式 */ //共同接口 interface db{ function conn(); } //服务器端开发(不知道会被谁调用) class dbmysql implements db{ public function conn(){ echo "mysql"; } } class dbsqlite implements db{ public function conn(){ echo "sqlite"; } } class Factory{ public static function createDB( $type ){ if($type == ‘mysql‘){ return new dbmysql(); }else if( $type == ‘sqllite‘ ){ return new dbsqlite(); }else{ throw new Exception("错误的数据库连接",1); } } } //客户端 首先看不到dbmysql和dbsqlite $mysql = Factory::createDB("mysql"); $mysql->conn();
    我们再来看看真正的工厂模式,大家可以看看“//服务器端添加oracle类===”这下面的内容,添加了一个oracel连接,只是增加了两个扩展,这样代码更容易扩展和维护。
    <?php /** * 工厂模式 */ //共同接口 interface db{ function conn(); } interface Factory{ function createDB(); } //服务器端开发(不知道会被谁调用) class dbmysql implements db{ public function conn(){ echo "mysql"; } } class dbsqlite implements db{ public function conn(){ echo "sqlite"; } } class mysqlFactory implements Factory{ public function createDB(){ return new dbmysql(); } } class sqliteFactory implements Factory{ public function createDB(){ return new dbsqlite(); } } //服务器端添加oracle类=== //前面的代码不用动 class dboracle implements db{ public function conn(){ echo "oracle"; } } class oracleFactory implements Factory{ public function createDB(){ return new dboracle(); } } //客户端 首先看不到dbmysql和dbsqlite $fact = new oracleFactory(); $db = $fact->createDB(); $db->conn();

     

    

  

 




以上是关于php设计模式之工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

PHP设计模式—工厂模式之工厂方法模式

php设计模式之工厂设计模式

PHP设计模式—工厂模式之简单工厂模式

PHP的设计模式之工厂模式

PHP设计模式之工厂模式和原型模式

php设计模式之工厂方法