装饰模式

定义

装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类模式更加灵活。

结构图

这里写图片描述

装饰模式的简化:
(1) 只有一个ConcreteComponent时,可以考虑去掉抽象的Component类,把Decorator作为ConcreteComponent的子类。
(2) 如果只有一个ConcreteDecorator类,可以将Decorator类和ConcreteDecorator的责任合成一个类。

透明性要求:
装饰模式对客户端的透明性要求程序不要声明Decorator类型的变量,而应该声明Component接口变量。

半透明的装饰模式:
纯粹的装饰模式已经很难找到了,装饰模式的用意是在不改变接口的前提下,增强类的性能。在增强性能时,需要建立新的方法,但是纯粹的装饰模式无法通过Component调用新建立的方法,这时候需要破坏透明性,才能使用新方法。

半透明的装饰模式是介于装饰模式和适配器模式之间的,装饰模式和适配器模式都是“包装模式”,它们都通过封装其他的对象达到设计的目的,但是邢台有很大区别。

理想的装饰模是在被装饰对象进行功能增强时,要求具体的构件角色、装饰角色的接口和抽象构件角色的接口完全一致。而适配器并不要求对原对象进行增强,但会改变对象的接口,以便和目标接口相符合。

这里写图片描述

装饰模式和桥接模式的区别:

两个模式都是为了解决子类过多问题, 但他们的诱因不同:
桥接模式对象自身有 沿着多个维度变化的趋势 , 本身不稳定,设计之初就应该使用。装饰模式是适应新需求而添加新功能,并且不影响其他对象的一种模式,在扩展时使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值