继上篇笔记后,今天继续讨论抽象工厂模式。
定义
抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
UML图
抽象工厂模式的通用模式代码
//抽象产品类A
public abstract class AbstractProductA {
/**
* 每个具体的产品子类需要实现的方法
*/
public abstract void method();
}
//抽象产品类B
public abstract class AbstractProductB {
/**
* 每个具体产品子类需要实现方法
*/
public abstract void method();
}
/** * 具体产品类A1 */ public class ConcreteProductA1 extends AbstractProductA { @Override public void method() { Log.e("zsf","具体产品A1的方法"); } }
/** * 具体产品类A2 */ public class ConcreteProductA2 extends AbstractProductA { @Override public void method() { Log.e("zsf","具体产品A2的方法"); } }
/** * 具体产品类B1 */ public class ConcreteProductB1 extends AbstractProductB { @Override public void method() { Log.e("zsf","具体产品B1的方法"); } }
/** * 具体产品类B2 */ public class ConcreteProductB2 extends AbstractProductB { @Override public void method() { Log.e("zsf","具体产品B2的方法"); } }
/** * 抽象工厂类 */ public abstract class AbstractFactory { /** * 创建产品A的方法 * @return 产品A对象 */ public abstract AbstractProductA createProductA(); /** * 创建产品B的方法 * @return 产品B对象 */ public abstract AbstractProductB createProductB(); }
可以很明显的看出,工厂模式的类繁多,但主要分为4类:
AbstractFactory:抽象工厂角色,声明一组用于创建一种产品的方法,每个方法对应一种产品。
ConcreteFactory:具体工厂角色,实现了在抽象工厂中定义的创建产品的方法
AbstractProduct:抽象产品角色,为每种产品声明接口。
ConcreteProduct:具体产品角色,定义具体工厂生产的具体产品对象