工厂方法模式

工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

工厂模式可以分为三类:

1、简单工厂模式(Simple Factory)

2、工厂方法模式(Factory Method)

3、抽象工厂模式(Abstract Factory)


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

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

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


工厂方法模式_第1张图片
简单工厂模式

建立一个工厂(一个函数或一个类方法)来制造新的对象。分布说明引子:从无到有。客户自己创建宝马车,然后拿来用。


工厂方法模式_第2张图片
工厂模式UML图

抽象产品角色(Product):定义产品的接口。

具体产品角色(ConcreteProduct) :实现接口Product的具体产品类。

抽象工厂角色(Creator) :声明工厂方法(FactoryMethod),返回一个产品。

真实的工厂(ConcreteCreator):实现FactoryMethod工厂方法,由客户调用,返回一个产品的实例。



工厂方法模式_第3张图片
抽象工厂模式

抽象工厂允许客户使用抽象的接口来创建一组相关产品,而不需要知道或关心实际生产出的具体产品是什么。


工厂模式的优点:工厂方法模式仿佛已经很完美的对对象的创建进行了包装,使得客户程序中仅仅处理抽象产品角色提供的接口,但使得对象的数量成倍增长。当产品种类非常多时,会出现大量的与之对应的工厂对象,这不是我们所希望的。

你可能感兴趣的:(工厂方法模式)