本文主要是介绍C++装饰模式Decorator,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这是单一职责模式了:
Decorator
Bridge
单一职责(如果责任不清晰,子类会急剧膨胀,而且重复代码,这时候就得划分单一的责任)
eg:一个流操作的代码(实际网络流的加密,文件流的加密,内存流的加密)加密操作都是一样的,但是流是不一样的。
上述eg的问题在于:子类的大量重复代码。
如何重构?(使用装饰模式)
编译时一样,运行时不一样(用多态)。
然后这样的话,三个重复的加密操作可以直接合一。
阶乘的关系----->加的关系了
1+n+n*m!/2--------->1+n+1+m
数学的差别巨大。
原因是:对继承的不良使用导致的。
总结:过度的使用继承,导致大量重复代码,子类急剧膨胀。
解决方法:**Decorator:**动态(组合)地给一个对象增加一些额外的职责。而非无脑地继承。
怎么看出来是不是Decorator模式?
继承子一个父类Stream,里面又有个字段也叫Stream,绝大多数都是Decorator模式,(这是同时继承,同时组合)
这篇关于C++装饰模式Decorator的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!