工厂模式
意图
定义一个用于创建对象的接口看,让子类决定实例化哪一个类。
简单工厂
- 单个工厂,静态方法:根据类型创建不同的抽象对象的实现;
- 实例化对象,用工厂方法代替new操作;
工厂方法
- 定义了一个创建对象的接口,但由子类决定实例化哪个类。工厂方法将对象的创建延迟到子类。
适用性
-
在不同条件下创建不同实例时。
-
工厂模式最基本的的动机是强制客户端使用接口,而不是具体的对象;
类图
工厂方法
优缺点
简单工厂
-
优点:解耦:调用方不用负责对象的创建,只需要使用,明确各自的职责
-
缺点:违反开闭原则,添加新的实现,会改动工厂方法的内部实现(简单的switch-case的改动可接受);
工厂方法:
- 不确定
- 缺点:每增加一种产品就要相应的增加一个工厂类,类增多