先简单说下工厂模式
:当我要实例化类的时候,直接不new
这个类,而是通过调用另一个类的一个方法来实例化这就是。工厂模式
的核心原理。
这样的好处有啥呢?
- 假设不使用工厂模式:比如很多地方调用类
class_a
,代码就会这样子创建一个实例:new class_a()
,假设某天需要把class_a
类的名子修改成class_b
,意味着很多调用的代码都要修改。如果你用工厂模式
,就你只需要改一处就可以了。当然这只是一个很极端的例子,没人会吃饱了没事干会去修改类名。这也是工厂模式最简单的用法。 - 工厂模式最多的用法,就是根据条件来创建不同的实例,比如你传入一个mysql,我去实例化mysql类给你,你传入sql server,那我就实例化sql server类给你。有点像
switch
干的活。这样就简化了逻辑,统一控制,代码也比较简化
代码:
interface IUser { function getName(); } class Factory 实现IUser { public function __construct($ id ){ echo $ id ;} public function getName() { return “Jack” ; } } } 类UserFactory { 公共静态函数创建($ ID ) { 返回新厂($ ID ); } }
调用的方法:
//引入工厂模式的php页面 include “./Factory.php” ; //实例化工厂模式的类方法 $ factory = UserFactory :: Create (2 ); echo ($ factory - > getName()。“ \ n ” );