创建型 工厂模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类
角色
- Product 定义工厂方法所创建对象
- ConcreteProduct 实现Product中的接口,定义具体化的产品。
- Creator 用于声明创建Product类型对象的工厂方法。
- ConcreteCreator 实现Creator中的工厂方法,专门用于产生具体的产品ConcreteProduct。
协作
Creator依赖于它的子类来定义工厂方法。
特点
- 面向的是抽象产品接口(Product);添加新类型产品的工厂类时,面向的是抽象工厂接口(Creator)
- 在用户类需要添加新类型的产品(NewProduct)时,只需要添加对应的新工厂类(NewProductFactory)
- 在用户类需要使用新产品时,只需要调用新工厂类(NewProductFactory)来获取新产品即可
实例
// 产品 例如 果汁
public class Juicer{
public Juicer MakeJuice()
}
// 苹果汁
public class appleJuicer extends Juicer {}
// 销售员
public class Waiter{
public void sell(Juicer juicer){}
}