1.目标
用于实例化有共同接口的类,由工厂模式动态去实例化所需要的类
三种基本形态:
1.简单工厂
2.工厂方法
3.抽象工厂
2.简单工厂
存在一个静态方法用于接收参数,根据传入的参数去返回实现同一接口不同类的某个类的实例
// 产品接口
public interface product{}
// 产品实现同一接口
pubic class washer implements product{
public washer(){
//打印 生产一台洗衣机
}
}
// public class icebox implements product{
public icebox(){
// 打印 生产一台冰箱
}
}
public class SimpleFactory{
public static product factory(String name){
if("washer".qruals(name)){
return new washer();
else ....
}
}
简单工厂是由工厂根据给出的信息,去创建所需的对象
但简单工厂无法满足产品增加的需求,增加产品就需要对工厂类老代码进行更改
2.工厂方法
为工厂类定义接口,产生生产不同产品的实现同一接口的不同工厂
把生产某种产品的功能放到产品对应的工厂中,去削弱工厂职能
类似于酒厂接口,酒厂下细分红酒厂,白酒厂,啤酒厂,每个厂生产对应的产品