工厂模式与抽象工厂的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工厂模式与抽象工厂的区别相关的知识,希望对你有一定的参考价值。

抽象工厂的方法经常以工厂方法的方式实现,两者很容易混淆。他们的工作都是负责创建对象。不同的是工厂方法用的方法是继承过来的,而抽象工厂是通过对象组合。其实整个工厂方法模式,只不过就是通过子类来创建对象。只需知道超类型就可以了,具体的类型由子类负责。在这一点上,抽象工厂表示毫无压力,但是做法不同。抽象工厂提供一个用来创建一个产品家族的抽象类型,这个类型的子类定义了产品被产生的方法。要想使用这个工厂,必须先实例化它(产品家族的抽象类型,通过组合而来)。它的优点是可以把一群相关的产品集合起来,缺点是如果有新产品加入需要修改接口代码,这会涉及到所有子类接口的更改,是一个很繁琐的工作。而工厂方法有点相反,它只是创建一个产品,不需要很大的接口,一个方法就可以了。如果你目前还不知道将来需要实例化哪些类时,也可以使用工厂方法,只要继承它,实现工厂方法就可以了。举一个例子:如果你有一个超市,只买一种物品,建议用工厂方法。如果有很多物品,就使用抽象工厂。当然,各有各的特点,最终都是学以致用,解决实际问题。很多问题都是结合各种办法解决的。

以上是关于工厂模式与抽象工厂的区别的主要内容,如果未能解决你的问题,请参考以下文章

简单工厂模式工厂方法模式与抽象工厂模式的区别(转)

工厂模式与抽象工厂的区别

设计模式:简单工厂工厂方法抽象工厂之小结与区别

设计模式之_简单工厂模式工厂方法模式抽象工厂模式 策略模式策略与工厂的区别(转)

设计模式系列-Builder模式,工厂方法模式和抽象工厂模式

浅谈工厂和建造者模式