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 }