美文网首页
代理模式和装饰器模式

代理模式和装饰器模式

作者: define南拳 | 来源:发表于2019-12-21 20:16 被阅读0次

    代理模式:控制访问 

    装饰器模式:增加职责

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

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

    总结

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

    相关文章

      网友评论

          本文标题:代理模式和装饰器模式

          本文链接:https://www.haomeiwen.com/subject/millwxtx.html