定义
工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
模式结构
Factory 是没有实现工厂方法的抽象类
ConcreteFacroty 只实现工厂方法的具体工厂类
Product 抽象产品
ConcreteProduct 具体产品
模式分析
工厂方法用来处理对象的创建,并将这样的行为封装在子类中。
在超类中,工厂方法是抽象的,因此它依赖子类来处理对象的创建,工厂方法必须返回一个产品,在超类中,通常使用到工厂方法的返回值。
工厂方法将客户和实际创建具体产品的代码分隔开来。
代码实现
class AbstractFactory(object):
def factory_method(self):
raise NotimplementedError
def use(self):
product = self.factory_method()
class ConcreteFactory(AbstractFactory):
def factory_method(self):
product = Product()
return productu
适用性
- 当一个类不知道它所必须创建的对象的类的时候
- 当一个类希望由它的子类来指定它所创建的对象的时候
- 当类将创建的职责委托给多个帮助子类中的某一个,并且希望你将哪一个帮助子类是代理者这一信息局部化的时候