Python設計模式之簡單工廠模式
阿新 • • 發佈:2018-12-10
定義:不直接向客戶暴露物件建立的實現細節,而是通過一個工廠類來負責建立產品類的例項。
角色:工廠角色,抽象產品角色,具體產品角色。
優點:隱藏了物件建立程式碼的細節,客戶端不需要修改程式碼。
缺點:違反了單一職責原則,將建立邏輯集中到一個工廠裡面,當要新增新產品時,違背了開閉原則
程式碼實現:
from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): # 抽象產品角色 @abstractmethod def pay(self,money): pass class AiliPay(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 AiliPay() elif method == 'yuebao': return AiliPay(True) elif method == 'applepay': return ApplePay() else: return NameError p = PaymentFactory() f = p.create_payment('yuebao') f.pay(100)