代理模式和装饰器模式

代理模式:控制访问 

装饰器模式:增加职责

代理模式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)

这就是装饰器模式,关键词:增加职责

总结

其实不论是代理模式还是装饰器模式,从外部来看,类还是那个类,其实本质只是将类进行了一定的拆分。拆分的结果就是:高内聚低耦合,职责更加清晰,也易于维护。

你可能感兴趣的:(代理模式和装饰器模式)