1. 程式人生 > >簡單工廠模式

簡單工廠模式

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)
工廠模式樣例

簡單工廠模式