工厂:任何可以产生对象的方法或类。 提高代码扩展性
1.简单工厂:灵活产生一个对象,工厂方法。
灵活产生一类的东西
举例:建一个工厂类,定义N个方法,每个方法返回一个实例,这些方法类型相近,例如车(火车,汽车…)
工厂可以直接返回接口↓
首先我们定义一个类型的接口,定义规范,定义具体交通工具类,并重写接口中的方法为自己的方法,创建工厂类,生产对象,在主方法中根据不同的工厂调用不同的go方法达到不同的效果,其本质为多态。
2.抽象工厂:产生一系列的东西,相当于产品组。其实就是两层继承实现关系
首先定义一个系列,均为抽象,被具体的类别实现,比如火锅,有清汤的,麻辣的,鸳鸯的,这个均在火锅类中定义不同的分支。而后抽象工厂返回了抽象的系列对象,每一个抽象类又有具体的现实类,现实类中有不同的分支,这就是两层多态,在主方法里先获得抽象系列的对象,然后在根据这个系列获得对应的具体分支(清汤,麻辣,鸳鸯)。
我们先通过抽象工厂获得某一个抽象类别,比如车呢,还是火锅呢,还是香烟呢的其中一种,然后在根据这个类别获取下面不同的方法。
总结:
简单工厂扩展单一产品较容易,新加工厂和商品,商品实现接口即可。
抽象商品新加系列较容易,新加产品族和工厂,产品族继承抽象产品族即可,产品族里在添加新的产品不灵活。