簡單工廠模式
阿新 • • 發佈:2017-06-02
Coding style err eth ech 簡單工廠模式 工廠類 代碼 closed
一、內容
不直接向客戶端暴露對象創建的實現細節,而是通過一個工廠類來創建產品類的實例
二、角色
- 工廠角色(Factory)
- 抽象產品角色(Product)
- 具體產品角色(Concrete Product)
三、優點
- 隱藏了對象創建的實現細節
- 客戶端不需要修改代碼
四、缺點
- 違反了單一職責的原則,將創建邏輯幾種到一個工廠類裏
- 當添加新產品時,需要修改工廠類代碼,違反了開閉原則
五、實例
#!/usr/bin/env python # -*- coding: utf8 -*- # __Author: "Skiler Hao" # date: 2017/6/2 15:45工廠模式樣例from abc import ABCMeta, abstractmethod class Payment(metaclass=ABCMeta): @abstractmethod def pay(self, money): pass class AliPay(Payment): def __init__(self,enabled_yue=False): self.enabled_yue = enabled_yue def pay(self, money): if self.enabled_yue:print("支付寶余額支付%s元" % money) else: print("支付寶支付%s元" % money) class ApplePay(Payment): def pay(self, money): print("蘋果支付支付%s元" % money) class WechatPay(Payment): def pay(self, money): print("微信支付支付%s元" % money) class PaymentFactory:def create_payment(self, method): if method == ‘alipay‘: return AliPay(enabled_yue=True) elif method == "applepay": return ApplePay() elif method == "wechatpay": return WechatPay() else: raise NameError(method) f = PaymentFactory() p = f.create_payment(‘alipay‘) p.pay(100)
簡單工廠模式