您的位置 首页 知识

工厂模式和抽象工厂模式的本质区别是什么 工厂模式和抽象工厂模式的本质区别是什么意思

工厂模式和抽象工厂模式的本质区别是什么 工厂方法模式的本质是通过继承,在需要工厂的类中,存在一个工厂函数,在派…

工厂模式和抽象工厂模式的本质区别是什么

工厂方法模式的本质是通过继承,在需要工厂的类中,存在一个工厂函数,在派生类中进行扩写和修改,进而达到不同工厂的目标。抽象工厂模式的本质是组合,在需要工厂的类中,增加一个抽象工厂的对象(一个包含各种工厂函数的接口),在不同情况下修改对象进而达到不同工厂的目标。
其实抽象工厂模式中包含了工厂方法模式,定义一个抽象工厂的接口,然后通过一系列派生来实现接口,这就是工厂方法模式。
至于很多回答中提到的工厂方法模式生产一个对象,抽象工厂模式生产多个对象,这并不是两个模式的本质区别。难道抽象工厂接口中只定义一个创造函数,就是工厂方法模式吗?

延伸阅读

使用简单工厂模式的优点是什么

个人理解:

简单工厂模式就是通过调用静态方法来返回(得到)对象的一种思路,这样在需要创建多个对象时,避免了需要先多次创建工厂对象,缺点是某种程度上违反了开放——封闭原则,因为每当需要增加新的对象类型时,就要修改已有的静态工厂类。简单工厂模式(包括别的工厂模式)更侧重于 “得到对象”,一般设计的时候这个对象应该是现实世界中某种事物的映射,有它自己的属性与方法,。

而策略模式更偏重于算法实现,按《大话设计模式》中的说法,策略模式更多地使用接口(Interface)而不是父类来实现,(当然这并不是绝对的,对于静态工厂模式中得到的对象的抽象也可以用接口,策略模式也可以用基类。),而接口更侧重于对于行为的抽象而不是对于对象的抽象。策略模式往往侧重于实现方便地替换不同的算法类,而这些类是通过方法来实现某些业务功能的,自身很可能没有属于自己的属性。

另外,《大话设计模式》这本书的作者

@程杰

也在知乎,能邀请到他本人回答那是再好不过的了。

spring框架包含工厂方法模式吗

当然了。.xml文件就是相当于那个工厂了。 其实就是动态代理的实现嘛

简单工厂模式,工厂方法模式和抽象工厂模式的异同

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

抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。

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

版权声明
返回顶部