设计模式学习每日一记(3.工厂方法)

工厂方法模式

A.定义:

定义一个创建对象的接口,让子类决定实例化哪一个类.工厂方法模式使一个product的实例化推迟到factory的子类中.

B.定义分析:

"定义一个创建对象的接口,让子类决定实例化哪一个类."和简单工厂一样,定义一个类,包含一个newProduct这样的创建对象的接口.

"定义一个创建对象的接口让子类决定实例化哪一个类."和简单工厂不同的是,这个factory类不再自己的newProduct接口创建所有的对象了.而是通过派生子类的方法创建具体product.子类继承factory后,多态实现newProduct接口,在自己的接口中创建具体product.

C.问题

(1)和简单工厂有什么区别呢?

factory不再自己创建所有对象,而是留出创建接口,给子类创建具体对象提供机会.而简单工厂在newProduct接口中根据参数不同创建了所有对象.

(2)工厂方法模式的优势是什么?

简单工厂把所有对象的创建都集中在newProduct中,这对于产品多或者产品在不断变化的系统,灵活性不够,每次都有修正简单工厂类,不易维护(修改一个实例化牵扯到其他代码),不易扩展(要修改过去的代码),不灵活(添加子类要修改过去代码.而工厂方法针对不同product都有相应的factory,增加新的product可以通过新增factory完成扩展,修改过去的product,可以通过修改对应的facotry完成,灵活性好,扩展性好,且可维护.

(3)工厂方法模式的劣势是什么?

对应每个product都要有一个factory,类变多了.

作者:linucos

出处:http://linucos.cnblogs.com

声明因文章引起的任何问题,本博客不负任何责任;版权所有,欢迎转载 
原文地址:https://www.cnblogs.com/linucos/p/2223311.html