抽象工厂模式
1 <?php 2 /** 3 * 工厂方法与抽象工厂的区别: 4 * 工厂方法: 抽象出一个共同的创建的行为, 但具体能创建出来什么东西,是由具体的工厂(子类或实现类)来实现的 5 * 抽象模式: 抽象出共同的创建行为,还有必须创建的对象, 所有的工厂(子类或实现类)都必须实现 6 */ 7 8 abstract class AbstractFactory 9 { 10 abstract public function createProduct1(); 11 abstract public function createProduct2(); 12 } 13 14 class FactoryA extends AbstractFactory 15 { 16 public function createProduct1() 17 { 18 return new ProductA1(); 19 } 20 21 public function createProduct2() 22 { 23 return new ProductA2(); 24 } 25 } 26 27 class FactoryB extends AbstractFactory 28 { 29 public function createProduct1() 30 { 31 return new ProductB1(); 32 } 33 34 public function createProduct2() 35 { 36 return new ProductB2(); 37 } 38 } 39 40 41 42 43 class ProductA1 44 { 45 46 } 47 class ProductA2 48 { 49 50 } 51 52 class ProductB1 53 { 54 55 } 56 class ProductB2 57 { 58 59 }