我正在研究访问者模式,我想知道这种模式与开放/封闭原则有何关系。我在几个网站上读到“这是遵循开放/封闭原则的一种方式。 ”(引自维基百科)。
在另一个网站上,我了解到这是遵循开放/封闭原则的方式,以便可以轻松地将新访问者添加到您的程序中,以便“在不更改现有代码的情况下扩展现有功能”。同一个网站提到这种访问者模式有一个主要缺点:“如果将一个新的可访问对象添加到框架结构中,则所有实现的访问者都需要修改。 ”使用 Java 的反射框架提供了解决此问题的方法。
现在,这个解决方案不是有点像黑客解决方案吗?我的意思是,我也在其他一些博客上找到了这个解决方案,但是代码看起来更像是一种解决方法!
对于向访问者模式的现有实现添加新可访问对象的问题,是否有另一种解决方案?