三大工厂模式的区别

2017-03-05  本文已影响101人  缄默的石头

简单工厂模式:

简单工厂模式简单工厂模式

简单工厂模式不是设计模式中的一种,但是也比较常用,所以拿出来对比下。提取出来一个类单独创建各种各种的产品,而客户不需要知道这些具体的产品类,减少了创建对象的耦合。我们称这个类为工厂,工厂封装了创建产品的细节,以后如果产品的种类发生了变化,不再需要修改客户代码,而且工厂也可以被别的代码复用。

静态的工厂方法:

工厂方法模式:

工厂方法模式工厂方法模式

工厂方法用来处理对象的创建,并将这样的行为封装在子类中。这样,客户代码中,关于超类的代码和子类对象创建代码解耦了.

工厂方法模式通过让子类来决定创建什么产品的方式,来达到将对象创建过程封装的目的。

如果产品体系在增加一种新产品时,不需要更改已有的代码,只需要改新增一个产品类和对应的工厂类。

其实在使用工厂方法模式中,使用哪一种工厂类,是由客户端选择的,客户端需要决定实例化哪一个工厂,选择判断的问题还是存在的。如果要添加功能,简单工厂模式是在工厂中修改,而工厂方法模式是在客户端修改。

工厂方法模式是简单工厂模式的进一步抽象和推广,克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。工厂方法的缺点是:每增加一个产品,都需要添加一个对相应的工厂类,增加了额外的开发量

抽象工厂模式:

抽象工厂模式抽象工厂模式

抽象工厂模式提供一个接口,用于创建一系列相关或者相互依赖对象的家族,而不需要明确指定具体类。

抽象工厂允许客户使用使用抽象的接口来创建一组相关的产品,而不需要关心实际产出的具体产品是什么。这样一来,客户就从具体的产品中解耦了。

工厂方法模式和抽象工厂模式都是创建型设计模式,负责创建对象。

优点:

缺点:

区别:

上一篇下一篇

猜你喜欢

热点阅读