PHP设计模式——简单工厂
简单工厂
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例
优点
模式的核心是工厂类。这个类含有必要的逻辑判断,可以决定在什么时候创建哪一个实例,而调用者则可以免除直接创建对象的责任。
简单工厂模式通过这种做法实现了对责任的分割,当系统引入新的类的时候无需修改调用者。
缺点
这个工厂类集中了所以的创建逻辑,当有复杂的多层次等级结构时,所有的业务逻辑都在这个工厂类中实现。什么时候它不能工作了,整个系统都会受到影响。
PHP代码
使用简单工厂模式来实现登录不同种的数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| <?php
interface db { function conn(); }
class dbmysql implements db { function conn() { echo "connect mysql!"; } }
class dbsqlite implements db { function conn() { echo "connect mysql!"; } }
class dboracle implements db{ function conn() { echo "connect oracle"; } }
class SimpleFactory {
public static function createDB($type){ if($type == 'mysql'){ return new dbmysql(); }elseif($type == 'sqlite'){ return new dbsqlite(); }elseif($type == 'oracle'){ return new dboracle(); }else{ throw new Exception("Error db type"); } } }
$mysql = SimpleFactory::createDB('mysql'); $mysql->conn();
$sqlite = SimpleFactory::createDB('sqlite'); $sqlite->conn();
$oracle = SimpleFactory::createDB('oracle'); $oracle->conn();
|