设计模式学习-每日一记(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,类变多了.