#yyds干货盘点#python抽象工厂模式
原创
©著作权归作者所有:来自51CTO博客作者窗边的小豆豆的原创作品,请联系作者获取转载授权,否则将追究法律责任
当希望成组替换生成的产品的时候,可以考虑使用抽象工厂模式,抽象工厂模式类图如下图所示
抽象工厂类AbstractFactory用来定义工厂类的接口。在Python语言中这个类并不是必须定义的,只要在需要实现共通功能的时候定义即可,这样可以提高代码的复用性。
具象工厂类(ConcreteFactory1或者ConcreteFactory2)负责根据扩展的需求构建一组实际的产品。为了明确类的职责,类名可以将Factory作为后缀。
和抽象工厂类的情况类似,Python语言中的抽象产品类ProductA、ProductB也不是必须定义的,只要每个工厂方法生成的产品类支持相同的操作即可(Python语言称这种情况为Protocol),这一点和模板有些类似。
具象产品类(ConcreteProductA1、ConcreteProductA2、ConcreteProductB1、ConcreteProductB2)遵从抽象产品类的约定并实现自己的功能。PyExecutor中和具象产品类相对应的是通用功能模块逻辑和小家电控制逻辑中的各种功能模块及连接线。
示例代码
# MiniBody类和MiniWheel类
class MiniBody:
def __init__(self):
pass
class MiniWhell:
def __init__(self):
pass
# HeavyBody类和BigWheel类
class HeavyBody:
def __init__(self):
pass
class BigWheel:
def __init__(self):
pass
class CarPartsFactory:
def create_boy(self):
return MiniBody()
def create_wheel(self):
return MiniWheel()
class TruckPartsFactory:
def create_boy(self):
return MiniBody()
def create_wheel(self):
return MiniWheel()