大话设计模式(Python版)--装饰器模式
来源:互联网 发布:linux可执行文件结构 编辑:程序博客网 时间:2024/06/16 10:58
第一版
#!/usr/bin/env pythonclass Person: def __init__(self, name): self.__name = name def WearTShits(self): print("Big T-Shits") def WearBigTrouser(self): print("Big Trouser") def WearSneakers(self): print("Seankers") def WearSuit(self): print("Suit") def WearTie(self): print("Tie") def WearLeatherShoes(self): print("Shoes") def Show(self): print("装扮的",self.__name)if __name__ == '__main__': xc = Person('小菜') print('第一种装扮: ') xc.WearTShits() xc.WearBigTrouser() xc.WearSneakers() xc.Show() print('第二种装扮: ') xc.WearSuit() xc.WearTie() xc.WearLeatherShoes() xc.Show()
第二版
#!/usr/bin/env python#import abcfrom abc import ABCMeta,abstractmethodclass Person: def __init__(self,name): self.__name = name def Show(self): print("装扮的",self.__name)class Finery: __metaclass__ = ABCMeta @abstractmethod def Show(self): passclass TShits(Finery): def Show(self): print("大T恤")class BigTrouser(Finery): def Show(self): print("垮裤")class Sneakers(Finery): def Show(self): print("破球鞋")class Suit(Finery): def Show(self): print("西装")class Tie(Finery): def Show(self): print("领带")class LeatherShoes(Finery): def Show(self): print("皮鞋")if __name__ == '__main__': xc = Person('小菜') print('第一种装扮:') dtx = TShits() kk = BigTrouser() pqx = Sneakers() dtx.Show() kk.Show() pqx.Show() xc.Show() print('第二种装扮:') xz = Suit() ld = Tie() px = LeatherShoes() xz.Show() ld.Show() px.Show() xc.Show()
第三版
#!/usr/bin/env pythonimport abcclass Component: __metaclass__=abc.ABCMeta @abc.abstractmethod def Operation(self): passclass ConcreteComponent(Component): def Operation(self): print("具体对象的操作")class Decorator(Component): def __init__(self): self._component = Component() def SetComponent(self,component): self._component = component def Operation(self): if(self._component != None): self._component.Operation() class ConcreteDecoratorA(Decorator): def __init__(self): self.__addedState = None def Operation(self): super(ConcreteDecoratorA,self).Operation() self.__addedState = "New State" print("具体装饰对象A的操作")class ConcreteDecoratorB(Decorator): def Operation(self): super(ConcreteDecoratorB,self).Operation() self.AddedBehavior() print("具体装饰对象A的操作") def AddedBehavior(self): passif __name__ == '__main__': c = ConcreteComponent() d1 = ConcreteDecoratorA() d2 = ConcreteDecoratorB() d1.SetComponent(c) d2.SetComponent(d1) d2.Operation()
第四版:
#!/usr/bin/env pythonimport abcclass Person: def __init__(self): pass def __init__(self,name): self.__name = name @abc.abstractmethod def Show(self): print("装扮的",self.__name)class Finery(Person): def __init__(self): self._component = super(Finery,self).__init__(self) def Decorate(self,component): self._component = component def Show(self): if(self._component != None): self._component.Show()class TShits(Finery): def Show(self): print("大T恤") super(TShits,self).Show()class BigTrouser(Finery): def Show(self): print("垮裤") super(BigTrouser,self).Show()class Sneakers(Finery): def Show(self): print("破球鞋") super(Sneakers,self).Show() class Suit(Finery): def Show(self): print("西装") super(Suit,self).Show()class Tie(Finery): def Show(self): print("领带") super(Tie,self).Show() class LeatherShoes(Finery): def Show(self): print("皮鞋") super(LeatherShoes,self).Show()if __name__ == '__main__': xc = Person("小菜") print("第一种装扮:") pqx = Sneakers() kk = BigTrouser() dtx = TShits() pqx.Decorate(xc) kk.Decorate(pqx) dtx.Decorate(kk) dtx.Show() print("第二种装扮:") dtx.Decorate(xc) kk.Decorate(dtx) pqx.Decorate(kk) pqx.Show()
0 0
- 大话设计模式(Python版)--装饰器模式
- 大话设计模式____装饰器模式
- 大话设计模式之装饰器模式
- 大话设计模式(四)装饰模式
- 大话设计模式之(装饰器模式)
- 大话设计模式-装饰模式
- 大话设计模式-装饰模式
- 大话设计模式-装饰模式
- 大话设计模式--装饰模式
- 大话设计模式----装饰模式
- 大话设计模式(Python版)--解释器模式
- 慕课网----大话PHP设计模式 五(原型模式,装饰器模式,迭代器模式,代理模式)
- 大话设计之装饰模式
- 【Python学习日记】【设计模式】装饰器(装饰模式)
- 大话设计模式之装饰设计模式
- 《大话设计模式》java实现之装饰器模式
- 大话设计模式之装饰模式代码实现-OC版
- 大话设计模式C++版——装饰模式
- 洛谷P3374模板线段树1
- C# 复习总结
- CUDA中编译时显示helper_functions.h:No such file的解决办法
- 学习安排
- Linux内核中的软中断、tasklet和工作队列详解
- 大话设计模式(Python版)--装饰器模式
- poj3020 Antenna Placement(无向图最小边覆盖)
- 10-接口
- selenium异常:org.openqa.selenium.remote.UnreachableBrowserException
- Struts2 异常There is no Action mapped for namespace [/] and action name [auth] associated with context
- CSS 4.7 样式-轮廓
- go-tour-zh离线安装
- Jquery的全选和取消
- 选择排序