1
8
访问者模式允许您做一些事情,而仅仅依靠多态性是不行的:处理未预料到的用例。如果你正在写一个库,这是一个重要的一点。让我详细说明一下:
考虑使用visitor模式的一个经典示例,即对某些
abstract syntax
访问者模式将这个负担从客户机转移到库中。 |
2
3
东西 在你不拥有的库中定义,你需要扩展它。比如:
多态性允许您定义可以对其执行操作的新对象:
缺点是使用visitor模式 成本 expression problem . visitor模式是一个很酷的模式,但是除了实现编译器之外,我从来没有发现对它的需要。 |
3
2
|
4
1
当我有一个对象树并且需要以多种方式打印内容时,我使用了visitor模式。逗号、XML等等。我没有为每个输出格式添加一个新的print方法,而是使用visitor模式并创建了CommaSepVisitor、XMLVisitor和HTMLVisitor类。树代码从来没有改变,因为我添加了更多的访问者类型,所以我从来没有引入错误。来访者本身很容易写作。 |
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
cobby · 在战略模式中使用工厂模式? 2 年前 |
Nobody · Java中带while循环的三角形模式 2 年前 |
Eduard Stefanescu · 如何在层之间传输异常? 6 年前 |
D. Schreier Talha Noyon · 对于目录中的每个类 6 年前 |
Tanvi Jaywant · 如何重载类 6 年前 |