工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题
首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。
工厂方法模式的对简单工厂模式进行了抽象。
有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。
在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。
代码:
"""设计模式--工厂模式""" class A(): '''工厂类''' def __init__(self): self.classname = '工厂类' class A1(A): def run(self): print(self.classname + '-- this is A1') class A2(A): def run(self): print(self.classname + '-- this is A2') class B(): '''接口基类''' def create(self): '''把要创建的工厂对象装配进来''' raise NotImplementedError class B1(B): def create(self): return A1() class B2(B): def create(self): return A2() B1().create().run() B2().create().run()
结果:
工厂类-- this is A1 工厂类-- this is A2