程序拓展需要添加新的:产品类 与 工厂类
添加新的需求不必修改旧代码
from abc import ABCMeta, abstractmethod
# 产品:产品1 产品2 产品3
# 工厂:工厂1 工厂2 工厂3
# 产品抽象一个类
# 工厂抽象一个类
# 每个产品都是一个类
class A(metaclass=ABCMeta):
@abstractmethod
def print_(self, money):
pass
class A1(A):
def print_(self, money):
print("A1产品", money)
class A2(A):
def print_(self, money):
print("A2产品", money)
class A3(A):
def print_(self, money):
print("A3产品", money)
# 创建产品的工厂类的接口
class B(metaclass=ABCMeta):
@abstractmethod
def print_str(self):
pass
# 工厂类1
class B1(B):
def print_str(self):
return A1()
# 工厂类2
class B2(B):
def print_str(self):
return A2()
# 工厂类3
class B3(B):
def print_str(self):
return A3()
# 工厂1 工厂通用方法
bfp = B1().print_str()
# 产品方法
bfp.print_(100)