标签:class 方法 简单工厂 客户端 else 服务 sql 实现 个数
最近一直很迷惑,设计模式到底是干嘛的,有什么用呢!所以专门花时间学习并整理了设计模式的好处等等!那今天先给大家一起分享下我所理解的设计模式--工厂模式!
方便扩展维护
给2个类大家好好看一下,理解一下其内容:
在这个类里,如果用户需要再添加一个数据库联接,比如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();
标签:class 方法 简单工厂 客户端 else 服务 sql 实现 个数
原文地址:http://www.cnblogs.com/xiaocaoer/p/6508847.html