定义
定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类
可以细分为简单工厂、工厂方法、抽象工厂三种模式
使用场景
不同的工厂模式适合不同的使用场景
- 简单工厂模式适合创建对象的逻辑比较简单的情况
- 工厂方法模式适合对象的创建逻辑较复杂,需要为工厂进行再次分类的情况,可以理解为“再抽象一个创建工厂的方法”,或者“抽象一个工厂的工厂”
- 抽象工厂模式适合一个工厂创建的是一组相互之间有关联对象,而不是单个对象的情况。例如门锁工厂,负责创建的锁和钥匙是一套的,这个时候就需要用到抽象工厂模式
实现方式
简单工厂模式
示例伪代码:
public class ItemFactory{
public static Item createItem(String type){
if("A".equals(type)){
return new AItem();
} else if("B".equals(type)){
return new BItem();
} else ......
}
}
工厂方法模式
public interface ItemFactory{
Item createItem();
}
//这段伪代码用的是单例工厂,实际情况根据需要进行改动
public class ItemFactoryMap{
private static final Map<String,ItemFactory> itemFac