首页 风水 正文

抽象工厂模式和工厂方法模式区别

 2023-05-04 13:45    0  0 赞

抽象工厂模式和工厂方法模式区别

抽象工厂模式和工厂方法模式区别

而抽象工厂模式有多个:一个抽象产品类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例抽象工厂模式和工厂方法模式区别。 一个抽象工厂类:工厂方法模式只有一个抽象产品类,可以派生出多个具体产品类。抽象工厂模式:多个抽象产品类。 一个抽象工厂类,每个抽象产品类可以派生出多个具体产品类。 区别。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例抽象工厂模式和工厂方法模式区别。 每个具体工厂类只能创建一个具体产品类的实例工厂方法模式,而抽象工厂模式可以创建多个,可以派生出多个具体工厂类

1. 这块确实初学者不太好理解,用个例子来简单说明下:

举例:一个公司生产枪支,手枪,冲锋枪

开始时,一个厂房里有2条生产线,一条生产线手枪,另一条生产线冲锋枪【简单工厂模式,一个厂房里多条生产线】抽象工厂模式和工厂方法模式

后来要增加一款枪:步枪,怎么办,增加一条生产线吧?

2. 厂子里没有多余空间了,只得把原来的生产线空间减小,好腾出地方来添加新的生产线【就好比增加一个新的子类就要改动工厂的内核代码】抽象工厂属于什么型模式

后来又要增加机枪,但是厂子空间太小了,容不下了,怎么办?

厂长发话了,多盖几个工厂,每种枪支一个厂房抽象工厂模式和工厂模式联系;这下好了,4个厂房,4种枪支在有条不紊地生产着【工厂模式】,以后需要再生成什么枪支,增加厂房就是了

后来,步枪和机枪销量不好,手枪和冲锋枪销量比较好,但是买家对口径有要求,另外顺带卖子弹会更卖钱,而且手枪和冲锋枪的子弹是通用的,于是厂长决定:抽象工厂属于什么型模式

3. 停止生产步枪和机枪,枪支产品分为小口径和大口径,分别是5.8mm小口径和7.62mm大口径

枪支生产线:分成两个产品线:A线生产5.8mm手枪和7.62mm手枪,B线生产5.8mm冲锋枪和7.62mm冲锋枪什么是抽象工厂模式

子弹生产线: 分成两个产品线:A线生产5.8mm子弹,B线生产7.62mm子弹

抽象工厂模式和工厂方法模式区别

厂房:就枪支生产线和子弹生产线的产品进行组合验收,

4. A厂房:5.8mm手枪和5.8mm子弹验收B厂房:7.62mm手枪和7.62mm子弹验收C厂房:5.8mm冲锋枪和5.8mm子弹验收 D厂房:7.62mm冲锋枪和7.62mm子弹验收

买家买货时,直接去厂房就可以了,4个厂房随它选

后来对特大口径有需求,9mm口径,这个容易,枪支生产线和子弹生产线各增加一条生产线,再盖几个验收厂房就是了

这就是抽象工厂模式,可以多维度生产产品,在厂房内自由组合

5. 工厂方法像是工厂内的一种产品生产线;调用一次只能生产一种产品。

抽象工厂模式就像拥有多个产品线的不同工厂;调用一次能生产多种产品。

抽象工厂模式和工厂方法模式区别

抽象工厂属于什么型模式

1. 工厂方法模式、抽象工厂模式最大的区别在于:

2. 工厂方法模式:针对的是 一个产品等级结构。

3. 抽象工厂模式:针对 多个产品等级结构。

抽象工厂和简单工厂的区别

首先来看看这两者的定义区别:

1. 工厂模式:定义一个用于创建对象的借口,让子类决定实例化哪一个类

抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类

2. 个人觉得这个区别在于产品,如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。再通俗深化理解下:工厂模式针对的是一个产品等级结构 ,抽象工厂模式针对的是面向多个产品等级结构的。

再来看看工厂方法模式与抽象工厂模式对比:

3. 工厂方法模式

抽象工厂模式

4. 针对的是一个产品等级结构针对的是面向多个产品等级结构

一个抽象产品类多个抽象产品类

5. 可以派生出多个具体产品类每个抽象产品类可以派生出多个具体产品类

一个抽象工厂类,可以派生出多个具体工厂类一个抽象工厂类,可以派生出多个具体工厂类

6. 每个具体工厂类只能创建一个具体产品类的实例每个具体工厂类可以创建多个具体产品类的实例

对于抽象工厂模式和工厂方法模式区别的问题,以上都有详细的解答和解释,可能内容有点多,大家要耐心看完,希望对各位有所帮助。