装饰者模式

装饰者模式

  1. 定义
    Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclass for extending functionality.
    通过保持相同的接口动态地给对象添加一些职责。装饰者模式提供了一种相比生成子类更为灵活的增加功能的方法;
  2. 分析
    装饰者模式的核心是保持相同的接口、动态增加功能;在我看来,装饰者模式是一个组装“新对象”的模式:我有一杯牛奶和一杯咖啡,我使用牛奶“装饰”一下咖啡,便得到一种新的饮料:咖啡牛奶!如果牛奶和咖啡都继承饮料这一父类,那么新的饮料并不是通过产生一个新的子类而获得的,而是通过组合已有子类获得。这样的好处便是动态扩展子类种类(可不就是动态给对象添加一些职责?),其弹性自然比通过创建新子类以获得新职责要好一些;而且由于装饰者和被装饰者继承自同一个父类,所以装饰者可以继续被装饰者装饰,如此便可以获得一杯橘子味的香芋奶茶咖啡了(只要敢想,就有可能,哈哈哈);
    但是装饰者模式也有它的不好处:多层装饰比较复杂;调试起来也不方便,所以适当装饰即可,过度装饰有害;
  3. 实现
    装饰者模式
  4. 体现的面向对象设计原则
    1. 里氏替换原则:被装饰者和装饰者继承自同一父类,角色可以相互替换;
    2. 开闭原则:通过子类的组装实现动态扩展子类,避免产生过多子类;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值