设计模式之装饰模式 c++实现和详细分析

Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 它使功能具有动态性

 

 已经开发完毕的对象,后期由于业务需要,对旧的对象需要扩展特别多的功能,这时候使用给对象动态地添加新的状态或者行为(即装饰模式)方法,而不是使用子类静态继承。

引入装饰模式的原因 

由于若有很多个功能,这么多功能 可能会出现各种组合,而每个组合都要对应一个类,这是指数级的类的数量增长(因为我们要扩展不应直接修改类,所以采取继承 而不是改变原有类)   这样会因为几个功能而需要添加很多类  如 per1 继承 A B C D 后变为产生类pa pb pc pd ,之后又出现了一个e  需要继续增加pe 继承出pae pbe pce pde 甚至pabcde pade 等等  这时就需要装饰模式了  动态的给一个对象增加额外的职责功能  它也可以解决部分的多继承问题 注意仅仅是部分


可能有人说将所有新功能加进原来的类中 但是不要忘记了我们设计的原则:尽量使用扩展而不使用改变 即开放封闭原则 所以我们不能简单的这样做

 此模式的最大优点是把类中的装饰功能从类中移除,简化了原来的类  有效的把核心职责和装饰功能分开,而且可以去除相关类中的重复的装饰逻辑

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值