抽象工厂模式
- 概念
抽象工厂模式是工厂模式的升级,用来创建一组相关或相互依赖的对象。 - 角色
1.抽象工厂角色
2.具体工厂角色
3.产品接口或抽象产品角色
4.具体产品角色 - 角色对应关系
1.多个具体工厂继承自抽象工厂;
2.多个具体产品继承自抽象产品或实现产品接口;
3.每个具体工厂可产生多个具体产品。 实现过程
产品接口
public interface Product1 {
}
public interface Product2 {
}
具体产品类
public class ProductA1 implements Product1 {
public ProductA1(){
System.out.println("Product : " + this.getClass().getSimpleName());
}
}
public class ProductA2 implements Product2 {
public ProductA2(){
System.out.println("Product : " + this.getClass().getSimpleName());
}
}
定义抽象工厂
public abstract class AbstractFactory {
public abstract Product1 create1();
public abstract Product2 create2();
}
产生产品的具体工厂
public class FactoryA extends AbstractFactory{
@Override
public Product1 create1() {
return new ProductA1();
}
@Override
public Product2 create2() {
return new ProductA2();
}
}
调用方法
public static void main(String[] args) {
AbstractFactory abstractFactory = new FactoryA();
abstractFactory.create1();
abstractFactory.create2();
}
输出
Product : ProductA1
Product : ProductA2
- 抽象工厂与工厂方法
1.抽象工厂模式适用于改变产品系列,对产品系列的改变符合开闭原则;
2.工厂方法模式适用于改变产品类别。
源码
https://github.com/Seasons20/DisignPattern.git
END