抽象工厂模式
设计原则:遵循单一职责、依赖倒置、开闭原则
常用场景:需要一个接口可以提供一个产品族,且不必知道产品的具体种类
使用概率:30%
复杂度:中
变化点:工厂与产品的种类
选择关键点:产品族是否需要一起提供,且是否有一致的接口
逆鳞:无
相关设计模式
建造者模式:两者都是建造一批对象或者说产品,不同的是两者的目的和实现手段,
在建造者模式中,是为了复用对象的构建过程而定义了一个指挥者,而在抽象工厂模式中,是为了提供一个这批对象的创建接口而定义了抽象工厂接口。
主要思想:
实际是把多工厂模式中分别提供不同类实例化的方法进行拆分,不放在一个工厂类中,而是拆分为多个工厂类,即把工厂类进一步抽象
一个工厂类提供一个单独类实例化方法,
同时工厂类和实例类分别实现接口
增加了工厂方法的扩展性
public interface DoInterface {
public void dosomething();
}
public interface FactoryInterface {
public DoInterface produce();
}
public class DoInterfaceImplementsA implements DoInterface {
@Override
public void dosomething() {
System.out.println("A");
}
}
public class DoInterfaceImplementsB implements DoInterface {
@Override
public void dosomething() {
System.out.println("B");
}
}
public class FactoryA implements FactoryInterface {
@Override
public DoInterface produce() {
return new DoInterfaceImplementsA();
}
}
public class FactoryB implements FactoryInterface {
@Override
public DoInterface produce() {
return new DoInterfaceImplementsB();
}
}