知识卡片

多层装饰像剥洋葱一样增加排查复杂度

普通读书笔记卡 · 1989.a.3

内容

[[装饰模式的定义与四个角色]]唯一显著缺点是多层装饰带来排查复杂度——出问题需要像剥洋葱 一样一层层拆开检查才能定位。应对办法是尽量控制装饰类层数,不要为了灵活而无节制叠加。 发散:装饰模式把”继承子类爆炸”的复杂度转移成了”运行时调用链变长、定位问题变难”的复杂度, 没有免费的解耦,只是复杂度转移到了不同地方。

参考来源

- 位置:《设计模式之禅(第2版)》第17章《装饰模式》(源文件:_epub-src/text/part0078.html) - 结论依据:原文明确"对于装饰模式记住一点就足够了:多层的装饰是比较复杂的……就像剥洋葱一样,你剥到了最后才发现是最里层的装饰出现了问题……因此,尽量减少装饰类的数量,以便降低系统的复杂度"。 - 原始内容:多层的装饰是比较复杂的。为什么会复杂呢?你想想看,就像剥洋葱一样,你剥到了最后才发现是最里层的装饰出现了问题,想象一下工作量吧,因此,尽量减少装饰类的数量,以便降低系统的复杂度。