码迷,mamicode.com
首页 > Web开发 > 详细

php设计模式之工厂模式

时间:2017-03-06 13:38:17      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:class   方法   简单工厂   客户端   else   服务   sql   实现   个数   

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

  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设计模式之工厂模式

标签:class   方法   简单工厂   客户端   else   服务   sql   实现   个数   

原文地址:http://www.cnblogs.com/xiaocaoer/p/6508847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!