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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| <?php
interface db { function conn(); }
interface Factory { function createDB(); }
class dbmysql implements db { function conn() { echo "connect mysql!"; } }
class dbsqlite implements db { function conn() { echo "connect mysql!"; } }
class mysqlFactory implements Factory { function createDB() { return new dbmysql(); } }
class sqliteFactory implements Factory { function createDB() { return new dbsqlite(); } }
class dboracle implements db{ function conn() { echo "connect oracle"; } }
class oracleFactory implements Factory { function createDB() { return new dboracle(); } }
$fact = new mysqlFactory(); $db = $fact->createDB(); $db->conn();
$fact1 = new oracleFactory(); $db1 = $fact1->createDB(); $db->conn();
|