您的位置:首页 > 编程语言 > Python开发

大话设计模式(Python版)--代理模式

2016-10-30 22:44 274 查看
没有代理的代码

#!/usr/bin/env python

class Pursuit:
def __init__(self, girl):
self.girl = girl
def GiveDolls(self):
print(self.girl.name,",give you a doll")
def GiveFlowers(self):
print(self.girl.name,",give you flowers")
def GiveChocolate(self):
print(self.girl.name,",give you chocolate")

class Girl:
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name

def main():
lily = Girl()
lily.name = 'lily'
tom = Pursuit(lily)
tom.GiveDolls()
tom.GiveFlowers()
tom.GiveChocolate()

if __name__ == '__main__':
main()


只有代理的代码
#!/usr/bin/env python

class Proxy:
def __init__(self, girl):
self.girl = girl
def GiveDolls(self):
print(self.girl.name,",give you a doll")
def GiveFlowers(self):
print(self.girl.name,",give you flowers")
def GiveChocolate(self):
print(self.girl.name,",give you chocolate")

class Girl:
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name

def main():
lily = Girl()
lily.name = 'lily'
tom = Proxy(lily)
tom.GiveDolls()
tom.GiveFlowers()
tom.GiveChocolate()

if __name__ == '__main__':
main()


符合实际的代码:
#!/usr/bin/env python
from abc import ABCMeta, abstractmethod
class IGiveGift:
__metaclass__ = ABCMeta
def GiveDolls(self):
pass
def GiveFlowers(self):
pass
def GiveChocolate(self):
pass

class Pursuit(IGiveGift):
def __init__(self, girl):
self.girl = girl
def GiveDolls(self):
print(self.girl.name,",give you a doll")
def GiveFlowers(self):
print(self.girl.name,",give you flowers")
def GiveChocolate(self):
print(self.girl.name,",give you chocolate")

class Proxy(IGiveGift):
def __init__(self, girl):
self.boy = Pursuit(girl)
def GiveDolls(self):
self.boy.GiveDolls()
def GiveFlowers(self):
self.boy.GiveFlowers()
def GiveChocolate(self):
self.boy.GiveChocolate()

class Girl:
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name

def main():
lily = Girl()
lily.name = 'lily'
tom = Proxy(lily)
tom.GiveDolls()
tom.GiveFlowers()
tom.GiveChocolate()

if __name__ == '__main__':
main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式