1. 概述
在编程中,经常需要new一些对象,但是在一些情况下, new操作直接生成对象会带来一些问题。举例来说,许多类型对象的创建需要一系列的步骤,在这种情况下,新对象的建立就是一个“过程”,不仅是一个操作。所以,如何能轻松方便地构造对象实例,而不关心构造对象实例的细节和复杂过程呢?
2. 应用场景
简化创建对象实例的操作,屏蔽创建对象的具体过程。
3. 示例
(1)简单工厂模式
建立一个工厂(一个函数或一个类方法)来制造新的对象。
1 BMW = Factory::createBMW($type); 45 } 46 }
(2)工厂方法模式
1 createBMW(); 62 case 523: 63 $BWM523 = new FactoryBWM523(); 64 return $BWM320->createBMW(); 65 //.... 66 } 67 68 } 69 } 70 class Customer { 71 private $BMW; 72 function getBMW($type){ 73 $class = new ReflectionClass('FactoryBWM' .$type );//建立 'FactoryBWM'这个类的反射类 74 $instance = $class->newInstanceArgs();//相当于实例化'FactoryBWM' .$type类 75 return $instance->createBMW(); 76 //或者直接 77 /** 78 * $instance = new 'FactoryBWM' .$type(); 79 * return $instance->createBMW(); 80 */ 81 } 82 }
(3)抽象工厂模式
1 newInstanceArgs();//相当于实例化Person 类 73 $this->BMW = $instance->createBMW(); 74 $this->airC = $instance->createAirC(); 75 } 76 }