创建型设计模式 - 0_简单工厂模式


创建型设计模式

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

0_简单设计模式

内容: 不直接向客户端 (高层代码,指调用底层代码的用户)暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例;

角色:
工厂角色(creator)
抽象产品角色(product): 是指抽象的 接口 类; 作用: 使得 调用所有具体产品时, 方法都一样; 统一了 使用方法;
具体产品角色: 具体产品: 各个具体的类; # 一、pandas是什么?

二、举例

1.底层代码

from  abc import  ABCMeta, abstractmethod


class Payment(metaclass= ABCMeta ):
    # abstract class
    @abstractmethod
    def  pay(self, money):
        pass

class Alipay(Payment):
    def __init__(self, use_huabei = False):
        self.use_huabei = use_huabei

    def pay(self, money):
        if self.use_huabei:
            print("huabei paid : %d RMB" % money)
        else:
            print("Alipay paid: %d RMB" %  money)


class  WechatPay(Payment):
    def pay(self, money):
        print("Wechat  paid: %d RMB" % money)

class  PaymentFactory:
     def  create_payment(self, method):
         if method == "alipay":
             return  Alipay()

         elif  method == " wechat":
             return  WechatPay()

         elif  method == "huabei":
              return  Alipay(use_huabei= True )

         else:
             raise TypeError("No  such payment named: %s "  % method )

2.客户端代码


# client  use

pf= PaymentFactory()
p = pf.create_payment('alipay')
p.pay(1000)

总结

优点:

1.隐藏对象创建的实现细节;
2.高层代码端 ,无需修改代码;

缺点:
1.违反了单一职责原则, 将创建了 多个逻辑 到一个工厂类里;
2.当添加新的产品类时, 需要修改工厂类的代码, 违反开闭原则;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值