工厂模式

from abc import abstractclassmethod,ABCMeta

class Payment(metaclass=ABCMeta):
    @abstractclassmethod
    def pay(self,money):
        raise NotImplementedError

class Alipay(Payment):
    def __init__(self,enable_yuebao=False):
        self.enable_yuebao = enable_yuebao

    def pay(self,money):
        if self.enable_yuebao:
            print('余额宝支付了%s元'%money)
        else:
            print('支付宝支付了%s元'%money)

class ApplePay(Payment):
    def pay(self,money):
        print('苹果支付了%s元'%money)


class PaymentFactory: #工厂类 封装了对象创建的细节
    def create_payment(self,method):
        if method == 'alipay':
            return Alipay()  ##创建Alipay对象
        elif method == 'applepay':
            return ApplePay()
        elif method == 'yuebao':
            return Alipay(True)
        else:
            raise NameError(method)

factory = PaymentFactory()  
payment = factory.create_payment('yuebao')   #创建Alipay对象
payment.pay(123)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容