打字猴:1.70045816e+09
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 ]  [ 下一页 ]