设计模式之装饰器

      装饰器顾名思义就是给一个人带发夹,带首饰打扮打扮。也就是给现有的对象添加新东西,这就引起一个话题,为什么大家不用继承呢?如果要加多个新东西,难道我们每加个东西就要继承前面一个对象,这显然会造成混乱,会使类不断的膨胀。而装饰器模式就避免了这样的问题。说了这么多装饰器模式主要防止类膨胀,他的特点:

      1 原始对象对装饰器一无所知。也不知道数量。

      2 各个装饰器(也可以说对象)彼此独立,发夹是发夹,首饰是首饰,靴子是靴子,他们之间不与其他装饰器发生冲突。

      3 各个装饰器可以随意配对在一起。

      4 不需要引入一个包含各种装饰的特性类??????


     现在做个例子,有个女孩(componet)要打扮自己,她可以配 发夹(decarator),可以穿 靴子(decarator),可以穿 丝袜(decarator).这个女孩可以随意搭配这些装饰品。

    

    首先 我们定义下 发夹 靴子  丝袜 三个对象装饰品。

    

  

   下面在定义一个女孩主体。

 

 然后我们实现她。看看女孩长什么样

 

 

 

输出结果

 

 

   总结

  

     存在一些组件而无法继承它

     你希望为他们额外添加行为或者状态,改变该类中某些对象,且没有影响该类其他对象。

     而这些行为和状态,你在项目执行时却无法获知。

   

 

    比较

 

     Decorator 装饰器模式:采用组装整合其他对象来实现,没有使用继承类或者接口实现。

     Adapter 适配器模式: 在不同类中通过接口搭接起来。

     Composite组合模式:聚集具有接口的对象而无需继承其对象接口。

    

   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值