创建型模式:

 

简单工厂模式

一、内容

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

二、角色

  • 工厂角色(Creator)
  • 抽象产品角色(Product)
  • 具体产品角色(Concrete Product)

三、优点

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

四、缺点

  • 违反了单一职责原则,将创建逻辑集中到一个工厂类中
  • 当添加新产品时,需要修改工厂类代码,违反了开放封闭原则

五、代码示例

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 Applepay(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 =='applepay':
            return Applepay()
        elif method =='yuebao':
            return Yuebao()
        else:
            return NameError(method)

factory = PaymentFactory()
alipay=factory.create_payment('yuebao')
alipay.pay(100)
简单工厂模式

相关文章: