装饰着模式

#!/user/bin/evn python
#-*- coding:utf-8 -*-
'''
  大话设计模式
  设计模式——装饰模式
  装饰模式(Decorator Pattern):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活.
 特点: 有效的把类的核心职责和装饰功能区分开,而且可以去除相关类中重复的装饰逻辑
'''
#定义对象接口
class Persion(object):
    def __init__(self,name0):
        self.name = name0
       
    def show(self):
        print("装扮的%s"%self.name)
#装饰类,继承这个接口
class Finery(Persion):
    def __init__(self):
        pass
    #这个方法是重点,实现了对自己的调用
    def Decorate(self,component):
        self.component = component
    def show(self):
        if self.component != None:
            self.component.show()
#装扮T
class Tshirts(Finery):
    def __init__(self):
        pass
    def show(self):
        print ('T')
        self.component.show()
class BigTrouser(Finery):
    def __init__(self):
        pass
    def show(self):
        print('dakucha')
        self.component.show()
class Flip(Finery):
    def __init__(self):
        pass
    def show(self):
        print('ssssss')
        self.component.show()
if __name__ == '__main__':
    p = Persion('mingming')
    ff = Finery()
    
    bt = BigTrouser()
    ts = Tshirts()
    f =Flip()
    ff.Decorate(p)
    bt.Decorate(ff)
    ts.Decorate(bt)
    f.Decorate(ts)
    #串联起来后
    f.show()
        
        
    

通过一个个继承自装饰类Finery的对象,实现给Person类赋予职责的功能,Person类并不会感知Finery的存在

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值