设计模式(三)--抽象工厂模式
抽象工厂模式的作用,可以处理具有相同等级结构的多个产品族中产品对象的创建问题。
首先解释一下产品族和相同等级结构的概念
相同等级结构: 抽象产品A和抽象产品B处于同一个继承等级(父类),因此成为具有相同等级结构。这里关键是要理解A和B都是相互独 立的抽象产品,在JAVA中用接口定义。
产品族:具体产品A1和具体产品A2都是由抽象产品继承下来的产品,这两个子类成为父类的产品族
抽象工厂的类图如下
抽象工厂的源代码
- public interface Creator
- {
- /**
- * A的抽象工厂方法
- */
- public ProductA factoryA();
- /**
- * B的抽象工厂方法
- */
- public ProductB factoryB();
- }
具体工厂1的源码
- public class ConcreteCreator1 implements Creator
- {
- /**
- * A的具体工厂
- */
- public ProductA factoryA()
- {
- return new ProductA1();
- }
- /**
- * B的具体工厂
- */
- public ProductB factoryB()
- {
- return new ProductB1();
- }
- }
具体工厂2的源码
- public class ConcreteCreator2 implements Creator
- {
- /**
- * A的具体工厂
- */
- public ProductA factoryA()
- {
- return new ProductA2();
- }
- /**
- * B的具体工厂
- */
- public ProductB factoryB()
- {
- return new ProductB2();
- }
- }
抽象产品A源码
- public interface ProductA
- {
- }
抽象产品B源码
- public interface ProductB
- {
- }
具体产品A1源码
- public class ProductA1 implements ProductA
- {
- public ProductA1()
- {
- //do something
- }
- }
具体产品A2源码
- public class ProductA2 implements ProductA
- {
- public ProductA2()
- {
- //do something
- }
- }
具体产品B1源码
- public class ProductB1 implements ProductB
- {
- public ProductB1()
- {
- //do something
- }
- }
具体产品B2源码
- public class ProductB2 implements ProductB
- {
- public ProductB2()
- {
- //do something
- }
- }