1. 抽象工厂模式概述
概念
- 进一步优化工厂方法模式,提取出公共的工厂接口
优点
- 由于客户端只和 IFactory 打交道了,调用的是接口中的方法,使用时根本不需要知道是在哪个具体工厂中实现的这些方法,这就使得替换工厂变得非常容易
- 实际上抽象工厂模式主要用于替换一系列方法,IFactory 中只有一个抽象方法时抽象工厂模式的优势还不明显。抽象工厂模式很好地发挥了开闭原则、依赖倒置原则
缺点
- 抽象工厂模式太重了,如果 IFactory 接口需要新增功能,则会影响到所有的具体工厂类
- 抽象工厂模式适用于增加同类工厂这样的横向扩展需求,不适合新增功能这样的纵向扩展
Demo
公共的工厂接口
1
2
3public interface IFactory {
Fruit create();
}实现接口的苹果工厂
1
2
3
4
5
6public class AppleFactory implements IFactory {
public Fruit create(){
return new Apple();
}
}调用者
1
2
3
4
5
6
7
8
9
10public class User {
private void eat(){
IFactory appleFactory = new AppleFactory();
Fruit apple = appleFactory.create();
IFactory pearFactory = new PearFactory();
Fruit pear = pearFactory.create();
apple.eat();
pear.eat();
}
}