一、抽象工厂模式与工厂模式的区别
抽象工厂主要是将工厂模式里的工厂的职责单一化,之前由一个工厂生产各种品牌的钢笔,现在由不同的工厂生产不同的钢笔,他的好处是在新增一种新的钢笔的时候,我们不需要去原来的工厂里面添加新增逻辑,只需要重新实现抽象工厂即可,这样满足工厂职责单一以及开闭原则。
二、工厂模式如何实施
1.创建被生产者的顶层对象
如下我们先定义一个钢笔Pen作为顶层对象,他有一个方法来获取当前钢笔的名称。
public interface Pen {
String getName();
}
2.创建顶层对象的实现
相当于有不同的品牌,市面上有英雄牌的钢笔、派克钢笔等等,可以有很多种。
public class HeroPen implements Pen{
@Override
public String getName() {
return "英雄牌钢笔";
}
}
public class ParkerPen implements Pen{
@Override
public String getName() {
return "派克牌钢笔";
}
}
3.创建一个顶层工厂作为抽象工厂
创建一个抽象工厂用于后面的工厂来实现或者扩展。
public interface AbstractPenFactory<T> {
T create();
}
4.创建抽象工厂的具体实现工厂
创建一个抽象工厂用于后面的工厂来实现或者扩展。
public class HeroPenFactory implements AbstractPenFactory<HeroPen>{
@Override
public HeroPen create() {
return new HeroPen();
}
}
public class ParkerPenFactory implements AbstractPenFactory<ParkerPen>{
@Override
public ParkerPen create() {
return new ParkerPen();
}
}