据我所知,访问者模式应该解决表达式问题(描述为这里),其中一个程序需要支持在多个类型上执行多个操作,理想情况下允许添加新操作和新类型,而不涉及现有代码。
据我所知,访问者模式只是将OOP样式更改为FP样式;添加新操作只意味着添加新类型的访问者,但添加新数据类型意味着向所有现有访问者添加一个方法。我的理解正确吗?如果是的话,访问者模式的好处是什么,如果它不能完全解决表达式问题?
发布于 2020-01-09 19:48:52
我不确定访客是否解决了“表达问题”。但你的理解是正确的:
访问者被设计为在具有子结构的复杂结构上执行操作(通常是在类似树的复合结构上),并且允许添加新的操作而不更改已访问的类。
不相关:我会小心地反对OOP和FP。您有FP语言,允许它们的函数将不可变的对象作为输入,生成对象作为结果,还有OOP语言引入了FP特性,允许实现FP逻辑(如果程序员愿意的话)。
https://softwareengineering.stackexchange.com/questions/403584
复制相似问题