简单工厂模式

内容:不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品 类的实例。

优点: 隐藏了对象创建的实现细节 客户端不需要修改代码

缺点: 违反了单一职责原则,将创建逻辑几种到一个工厂类里,当添加新产品时,需要修改工厂类代码,违反了开闭原则

from abc import ABCMeta, abstractmethod


# 定义初始类
class PayCommon(metaclass=ABCMeta):

    @abstractmethod
    def draw(self, money):
        pass


# 实现支付宝支付
class AliPay(PayCommon):
    def draw(self, money):
        print("支付宝支付 % d" % money)


# 实现微信支付
class WeChatPay(PayCommon):
    def draw(self, money):
        print("微信支付 % d" % money)


# 定义形状工厂类
class ShapeFactory:
    def pay(self, shape_type):
        if shape_type == "ali":
            return AliPay()
        elif shape_type == "wechat":
            return WeChatPay()
        else:
            raise ValueError("不支持的支付类型")


# 客户端代码
if __name__ == "__main__":
    factory = ShapeFactory()

    circle = factory.pay("ali")
    circle.draw(100)

    rectangle = factory.pay("wechat")
    rectangle.draw(10)

results matching ""

    No results matching ""