知识卡片

访问者模式的优点与三个代价

普通读书笔记卡 · 1993.a.1

内容

[[访问者模式的定义与五个角色]]优点:符合单一职责;扩展性好;灵活性高。代价:元素须向 访问者公开信息,违背[[迪米特法则的定义]];元素类型增删牵连所有Visitor;访问者依赖具体 元素类型,违背依赖倒置。发散:这些代价反映其适用边界——假设元素类型稳定、操作多变, 类型本身频繁变动时它反而是改动成本最高的地方。

参考来源

- 位置:《设计模式之禅(第2版)》第25章《访问者模式》(源文件:_epub-src/text/part0116.html) - 结论依据:原文分三点列出优点(单一职责、优秀扩展性、灵活性高),并分三点列出缺点:具体元素对访问者公布细节违反迪米特法则、具体元素变更困难、访问者依赖具体元素而非抽象元素违背依赖倒置原则。 - 原始内容:具体元素角色也就是Employee抽象类的两个子类负责数据的加载,而Visitor类则负责报表的展现……具体元素对访问者公布细节……这是迪米特法则所不建议的……访问者依赖的是具体元素,而不是抽象元素,这破坏了依赖倒置原则。