这两个概念有一个共同点,那就是扩展操作并在单独的类中的其他地方定义它。但我认为扩展方法不是访问者模式实现的真实示例。有人可以解释一下吗? 访问者模式和扩展方法之间有联系吗?
最佳答案
我不会说访问者模式和扩展方法之间有任何直接关系,但它们有相似之处。
访问者模式的目的是允许在对象结构的元素上轻松添加操作,而无需修改不同的元素本身。主要好处是因为像 xml 这样的对象结构将具有不同类型的节点。如果你想在每个节点上添加一个操作,那么你必须在不同类的所有节点中实现它。使用该模式,您可以将其集中在访问者内部。另一方面,扩展方法只关注单个类。
相似之处在于,在扩展方法和访问者类中,您无权访问类的私有(private)字段。
在我的工作中,我没有遇到过需要应用访客模式的情况,但另一方面,我经常使用扩展。直到最近我才实现 Active Record我的一些模型的扩展,扩展方法对这些模型确实有帮助。
因此,我想说它们之间的相似之处在于它们有助于将行为扩展到一个类/一组类,而相似性几乎就此结束。
关于extension-methods - 扩展方法是访问者模式的一个例子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29904979/