python设计模式(四)--代理模式(上)

最近正在持续更新源码库,代码都是参考大话设计模式翻成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()

 

你可能感兴趣的:(python设计模式(四)--代理模式(上))