1700458160
1700458161
图9-3 抽象工厂模式的通用类图
1700458162
1700458163
抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。我们来看看抽象工厂的通用源代码,首先有两个互相影响的产品线(也叫做产品族),例如制造汽车的左侧门和右侧门,这两个应该是数量相等的——两个对象之间的约束,每个型号的车门都是不一样的,这是产品等级结构约束的,我们先看看两个产品族的类图,如图9-4所示。
1700458164
1700458165
1700458166
1700458167
1700458168
图9-4 抽象工厂模式的通用源码类图
1700458169
1700458170
注意类图上的圈圈、框框相对应,两个抽象的产品类可以有关系,例如共同继承或实现一个抽象类或接口,其源代码如代码清单9-11所示。
1700458171
1700458172
代码清单9-11 抽象产品类
1700458173
1700458174
public abstract class AbstractProductA{
1700458175
1700458176
//每个产品共有的方法
1700458177
1700458178
public void shareMethod(){
1700458179
1700458180
}
1700458181
1700458182
//每个产品相同方法,不同实现
1700458183
1700458184
public abstract void doSomething();
1700458185
1700458186
}
1700458187
1700458188
两个具体的产品实现类如代码清单9-12、代码清单9-13所示。
1700458189
1700458190
代码清单9-12 产品A1的实现类
1700458191
1700458192
public class ProductA1 extends AbstractProductA{
1700458193
1700458194
public void doSomething(){
1700458195
1700458196
System.out.println(“产品A1的实现方法”);
1700458197
1700458198
}
1700458199
1700458200
}
1700458201
1700458202
代码清单9-13 产品A2的实现类
1700458203
1700458204
public class ProductA2 extends AbstractProductA{
1700458205
1700458206
public void doSomething(){
1700458207
1700458208
System.out.println(“产品A2的实现方法”);
1700458209
[
上一页 ]
[ :1.70045816e+09 ]
[
下一页 ]