三种工厂模式总结【通俗易懂,配代码】
没有工厂模式的情况下,创建者和调用者没有分离。
简单工厂:简单工厂模式只有一个工厂类,根据条件决定一个接口由哪个具体产品类来实现。
【用同一个工厂产生不同的实例对象】
【工厂类】其中Audi和Byd都是Car接口的实现类。
在客户端情况下
工厂方法:创建多个工厂类。各个工厂类中,都对应一个获得接口A实例的方法。用户决定使用哪个工厂。
【和简单工厂相比:不同的工厂,针对性的产生对应的实例对象】
【和抽象工厂相比:一个工厂类,只可以产生一个类型的实例对[本例为Car对象]】
接口A的实例是一个有run方法的Car对象。
写一个总工厂接口【来确定每个工厂都实现哪些方法】。
每个工厂类都实现工厂接口,并在里面实现生产汽车【car对象】的方法
用户决定使用哪个工厂。
抽象工厂:对工厂方法进行扩展。各个工厂类中,再增加一个获得接口B实例的方法。
【和简单工厂相比:不同的工厂,针对性的产生对应的实例对象】
【和工厂方法相比:一个工厂类,可产生多个类型的不同类型的对象,本例为【Engine,Seat对象】】
工厂类中可获得多个接口实例的方法,图下两个,分别称为接口A和接口B
写一个总工厂接口【来确定每个工厂都是先哪些方法】
每个工厂类都实现工厂接口,并在里面实现产生两个接口实例的方法
用户直接使用工厂里面的一套东西
提一下,多个工厂类都继承自同一个接口。
总结
1、工厂方法这样折腾,有意思吗,玩我呢?你不就是简单工厂披了个马甲?
2、抽象工厂,你和工厂方法有啥区别,你多个功能就敢自立门户了?
简单工厂,就是一个工厂里面可以加工一个类型的不同实例对象,比如可以加工好座椅,也可以加工坏座椅,但必须是座椅。
工厂方法的一个工厂只能加工一个类型的一个实例对象。比如,座椅,一个工厂只能加工一种质量的座椅出来。
抽象工厂比较适合一个产品簇。因为一个工厂可以加工多个不同类型的实例对象。比如【座椅,轮胎】,一个工厂不但可以加工出来座椅,还可以加工出来轮胎,但是座椅,和轮胎的种类只能是一种。