大飞

大飞 关注TA

挑战一切!

大飞

大飞

关注TA

挑战一切!

  •  世界的顶端
  • 混口饭吃
  • 写了333,609字

最近回复

该文章投稿至Nemo社区   Python  板块 复制链接


Python 工厂模式

发布于 2018/12/07 16:30 1,703浏览 0回复 960

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

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

  缺点:添加新产品时,需要修改工厂类代码,违反了开放封闭原则

 具体实现:

from abc import abstractmethod, ABCMeta


class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self, money):
pass


class Alipay(Payment):
def pay(self, money):
print('支付宝支付了%s元' % money)


class Wchatpay(Payment):
def pay(self, money):
print('微信支付了%s元' % money)


class Yuebao(Payment):
def pay(self, money):
print('余额宝支付了%s元' % money)


'''
工厂类:封装了对象创建的细节
'''


class PaymentFactory:

def create_payment(self, method):
if method == 'alipay':
return Alipay()
elif method == 'wchatpay':
return Wchatpay()
elif method == 'yuebao':
return Yuebao()
else:
return NameError(method)


if __name__ == '__main__':
factory = PaymentFactory()
applepay = factory.create_payment('wchatpay')
applepay.pay(1000)

输出:

微信支付了1000元

点赞(1)
点了个评