设计模式之工厂方法模式

来源:互联网 发布:金融大数据分析师 编辑:程序博客网 时间:2024/06/14 16:28

一. 工厂方法模式

    我们知道简单工厂模式的应用就是用来创建一个对象,简单工厂模式是将所有对象的初始化集于一个具体的工厂类来实现,这个工厂类负责所有产品的创建,但是这种创建只能创建单一的产品,如简单工厂模式里的ChickenFactory这种工厂只能生产鸡肉这个系列的产品,而当需求发生变化时简单工厂模式就无法应对了。

    例如:我再一次带MM光临了麦当劳时,这次MM不想吃鸡翅了,而是选择了吃汉堡,可见这个时候ChickenFactory无法满足客户需要了,需要做出更改,方法就是再加一个工厂类:HamburgerFactory该类负责创建汉堡系列产品,这种方法造成的直接结果就是每一种产品都需要一个具体的工厂类,造成工厂过多,客户端使用不方便,因为我带MM去麦当劳不能由MM或者我决定鸡翅和汉堡是怎么生产出来的,我们只需要跟服务员说一声吃什么就可以了。 而工厂方法模式正是解决这种弊端而出现的,在工厂方法模式里,由一个抽象工厂类负责所有产品的创建,工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而可以成为多个简单工厂模式的综合,进而推广了简单工厂模式。

二. 举例:

此模式涉及到的角色:

抽象工厂角色(McDonaldFactory

具体工厂角色(ChickenFactory, HamburgerFactory

抽象产品角色(Product

具体产品角色(ChickenWing, BeefHamburger

客户端调用:

 

三. 总结:工厂方法模式的核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,进负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应该被实例化这种细节,这使得工厂方法模式可以用来允许在不修改具体工厂角色的情况下引进新的产品,这一特点使得他具有超过简单工厂模式的优越性。

 

继续努力,加油!

 

原创粉丝点击