三种工厂模式总结【通俗易懂,配代码】

没有工厂模式的情况下,创建者和调用者没有分离。

三种工厂模式总结【通俗易懂,配代码】_第1张图片

简单工厂:简单工厂模式只有一个工厂类,根据条件决定一个接口由哪个具体产品类来实现。

【用同一个工厂产生不同的实例对象】

【工厂类】其中Audi和Byd都是Car接口的实现类。

在客户端情况下

三种工厂模式总结【通俗易懂,配代码】_第2张图片

工厂方法:创建多个工厂类。各个工厂类中,都对应一个获得接口A实例的方法。用户决定使用哪个工厂。

【和简单工厂相比:不同的工厂,针对性的产生对应的实例对象】

【和抽象工厂相比:一个工厂类,只可以产生一个类型的实例对[本例为Car对象]】

  

   接口A的实例是一个有run方法的Car对象。

三种工厂模式总结【通俗易懂,配代码】_第3张图片

写一个总工厂接口【来确定每个工厂都实现哪些方法】。

三种工厂模式总结【通俗易懂,配代码】_第4张图片

每个工厂类都实现工厂接口,并在里面实现生产汽车【car对象】的方法

三种工厂模式总结【通俗易懂,配代码】_第5张图片三种工厂模式总结【通俗易懂,配代码】_第6张图片

用户决定使用哪个工厂。

三种工厂模式总结【通俗易懂,配代码】_第7张图片

 

抽象工厂:对工厂方法进行扩展。各个工厂类中,再增加一个获得接口B实例的方法。

【和简单工厂相比:不同的工厂,针对性的产生对应的实例对象】

【和工厂方法相比:一个工厂类,可产生多个类型的不同类型的对象,本例为【EngineSeat对象】】

 

工厂类中可获得多个接口实例的方法,图下两个,分别称为接口A和接口B

写一个总工厂接口【来确定每个工厂都是先哪些方法】

三种工厂模式总结【通俗易懂,配代码】_第8张图片

每个工厂类都实现工厂接口,并在里面实现产生两个接口实例的方法

三种工厂模式总结【通俗易懂,配代码】_第9张图片三种工厂模式总结【通俗易懂,配代码】_第10张图片

用户直接使用工厂里面的一套东西

三种工厂模式总结【通俗易懂,配代码】_第11张图片

 

提一下,多个工厂类都继承自同一个接口。

 

 

总结

1、工厂方法这样折腾,有意思吗,玩我呢?你不就是简单工厂披了个马甲?

2、抽象工厂,你和工厂方法有啥区别,你多个功能就敢自立门户了?

简单工厂,就是一个工厂里面可以加工一个类型的不同实例对象,比如可以加工好座椅,也可以加工坏座椅,但必须是座椅。

工厂方法的一个工厂只能加工一个类型的一个实例对象。比如,座椅,一个工厂只能加工一种质量的座椅出来。

抽象工厂比较适合一个产品簇。因为一个工厂可以加工多个不同类型的实例对象。比如【座椅,轮胎】,一个工厂不但可以加工出来座椅,还可以加工出来轮胎,但是座椅,和轮胎的种类只能是一种。

你可能感兴趣的:(s,j,设计模式)