1.工厂模式简介
工厂模式就是定义一个创建对象的接口,由子类去决定实例化哪一个类,将实例化对象的操作延迟到子类。可以理解为一个工厂根据不同的需求产生不同的产品。
工厂模式细分为:简单工厂,工厂模式,抽象工厂
1.简单工厂
定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到了子类。
场景延伸:同一个工厂可以产生不同类型的车。
首先定义一个抽象的汽车工厂,工厂方法通过出入的参数生成生成不同产品类型的车
然后对于汽车,公交车还有自行车分别实现工厂接口里面的方法
然后是车辆工厂,封装了创建游戏对象的过程
最后是测试:
2.工厂模式
工厂模式跟简单工厂模式的区别在于简单工厂只有一个工厂类,提供了一个工厂方法,由入参决定生产那个产品,而工厂模式则定义一个工厂接口,不同的产品工厂实现工厂接口,生产的产品由产品工厂决定
定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到了子类。
比如:不同地区咖啡工厂受制于环境、原料等因素的影响,制造出的咖啡种类有限。中国咖啡工厂仅能制造卡布奇诺、拿铁,而美国咖啡工厂仅能制造美式咖啡、拿铁。
3.抽象工厂
提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
比如:咖啡工厂做大做强,引入了新的饮品种类:茶、 碳酸饮料。中国工厂只能制造咖啡和茶,美国工厂只能制造咖啡和碳酸饮料。
如果用上述工厂方法方式,除去对应的产品实体类还需要新增2个抽象工厂(茶制造工厂、碳酸饮料制造工厂),4个具体工厂实现。随着产品的增多,会导致类爆炸。
所以这里引出一个概念产品家族,在此例子中,不同的饮品就组成我们的饮品家族, 饮品家族开始承担创建者的责任,负责制造不同的产品。