抽象工厂模式
一、实例代码
1 /**
2 * 抽象产品A的接口
3 * @author abc
4 *
5 */
6 public interface AbstractProductA {
7 //定义抽象产品A相关的操作
8 }
9
10 /**
11 * 抽象产品B的接口
12 * @author abc
13 *
14 */
15 public interface AbstractProductB {
16 //定义抽象产品B相关的操作
17 }
18
19 /**
20 * 产品A的具体实现
21 */
22 public class ProductA1 implements AbstractProductA {
23 //实现产品A的接口中定义的操作
24 }
25
26 /**
27 * 产品A的具体实现
28 */
29 public class ProductA2 implements AbstractProductA {
30 //实现产品A的接口中定义的操作
31 }
32
33 /**
34 * 产品B的具体实现
35 */
36 public class ProductB1 implements AbstractProductB {
37 //实现产品B的接口中定义的操作
38 }
39
40 /**
41 * 产品A的具体实现
42 */
43 public class ProductB2 implements AbstractProductB {
44 //实现产品B的接口中定义的操作
45 }
46
47 /**
48 * 抽象工厂的接口,声明创建抽象产品对象的操作
49 * @author abc
50 *
51 */
52 public interface AbstractFactory {
53 /**
54 * 实例方法,创建抽象产品A的对象
55 * @return 抽象产品A的对象
56 */
57 public AbstractProductA createProductA();
58
59 /**
60 * 实例方法,创建抽象产品B的对象
61 * @return 抽象产品B的对象
62 */
63 public AbstractProductB createProductB();
64 }
65
66 /**
67 * 具体的工厂实现对象,实现创建具体的产品对象的操作
68 */
69 public class ConcreateFactory1 implements AbstractFactory {
70
71 @Override
72 public AbstractProductA createProductA() {
73 return new ProductA1();
74 }
75
76 @Override
77 public AbstractProductB createProductB() {
78 return new ProductB1();
79 }
80 }
81
82 /**
83 * 具体的工厂实现对象,实现创建具体的产品对象的操作
84 */
85 public class ConcreteFactory2 implements AbstractFactory {
86
87 @Override
88 public AbstractProductA createProductA() {
89 return new ProductA2();
90 }
91
92 @Override
93 public AbstractProductB createProductB() {
94 return new ProductB2();
95 }
96
97 }
98
99 public class Client {
100 public static void main(String[] args) {
101 //创建抽象工厂对象
102 AbstractFactory af = new ConcreateFactory1();
103 //通过抽象工厂来获取一系列的对象,如产品A和产品B
104 af.createProductA();
105 af.createProductB()
106 }
107 }