一、内容
不直接向客户端暴露对象创建的实现细节,定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪一个产品类
二、角色
三、优点
四、缺点
五、适用场景
六、实例
#!/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(metaclass=ABCMeta): @abstractmethod def create_payment(self): pass class AlipayFactory(PaymentFactory): def create_payment(self): return AliPay() class AppleFactory(PaymentFactory): def create_payment(self): return ApplePay() class WechatFactory(PaymentFactory): def create_payment(self): return WechatPay() f = AlipayFactory() p = f.create_payment() p.pay(100)
七、UML图
原文:http://www.cnblogs.com/skiler/p/6935045.html