代理模式和装饰器模式
2019-12-21 本文已影响0人
define南拳
代理模式:控制访问
装饰器模式:增加职责
代理模式demo
假如有一个小孩儿,会吃饭、会玩、会休息
class IEatable:
def drink:
def eat:
class Iplayable:
def gotoSea:
def gotoPark:
class IRestable:
def nightSleep:
def middaySleep:
Child(IEatable,IPlayable,IRestable)
假如他还是个孩子,不会吃饭,这时候就需要代理帮忙(代理模式)
class ChildEatProxy(IEatable):
def drink:
print("杯子拿来")
child.drink()
print("杯子拿走")
这样1来代理只实现了吃饭接口,所以限制了原对象的行为。关键词:控制访问
装饰器模式demo
这些孩子中,有一些孩子很聪明,从小就会诗朗诵、会唱歌,这时候,不能让所有孩子拥有这些特性,不能孩子实现所有接口。这只能算是部分孩子的一些特性。我们可以这样做
class ISingable:
def sing:
class SingableChild(IEatable,IPlayable,IRestable,ISingable):
def sing:
print("singing a song")
def__getattr__(self, name):
return getattr(child, name)
这就是装饰器模式,关键词:增加职责
总结
其实不论是代理模式还是装饰器模式,从外部来看,类还是那个类,其实本质只是将类进行了一定的拆分。拆分的结果就是:高内聚低耦合,职责更加清晰,也易于维护。