python设计模式(四)--代理模式(上)
python设计模式(四)--代理模式(上)
极光火狐狸 发表于2年前
python设计模式(四)--代理模式(上)
  • 发表于 2年前
  • 阅读 19
  • 收藏 0
  • 点赞 2
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

摘要: 代理模式: 为其他对象提供一种代理以控制对这个对象的访问.

最近正在持续更新源码库,代码都是参考大话设计模式翻成python版,完整代码片段请到github上去下载.

https://github.com/zhengtong0898/python-patterns

 

参考:

    书籍<<大话设计模式>> 第7章

 

Python 3.x

# -.- coding:utf-8 -.-
# __author__ = 'zhengtong'
# 代理模式: 为其他对象提供一种代理以控制对这个对象的访问.


class GiveGift:

    """
    Python没有interface类, 但是可以通过这种方式来实现类似的接口类.
    也就是说在python里, 就是公共的接口不是必须的.
    定义公共接口的意义是让子类可以得到规范.
    """

    def give_dolls(self):
        raise NotImplementedError

    def give_flowers(self):
        raise NotImplementedError

    def give_chocolate(self):
        raise NotImplementedError


class Pursuer(GiveGift):

    def __init__(self, mm):
        self.mm = mm

    def give_dolls(self):
        print(self.mm.name, " 送你洋娃娃")

    def give_flowers(self):
        print(self.mm.name, " 送你鲜花")

    def give_chocolate(self):
        print(self.mm.name, " 送你巧克力")


class SchoolGirl:

    def __init__(self, name):
        self.name = name


class Proxy(GiveGift):

    def __init__(self, to_user):
        self.gg = Pursuer(to_user)

    def give_dolls(self):
        self.gg.give_dolls()

    def give_flowers(self):
        self.gg.give_flowers()

    def give_chocolate(self):
        self.gg.give_chocolate()


def main():
    jiaojiao = SchoolGirl('李娇娇')
    daili = Proxy(jiaojiao)

    daili.give_dolls()
    daili.give_flowers()
    daili.give_chocolate()


if __name__ == '__main__':
    main()

 

共有 人打赏支持
粉丝 11
博文 29
码字总数 14739
×
极光火狐狸
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: