Vis*_*u Y 7 .net c# oop design-patterns
通过互联网上可用的设计模式的不同文章中的各种示例,我可以看到访问者模式与遍历某些数据结构相关联,通常是树或层次结构,我有点困惑,因为如果是这样的话,我们可以使用迭代器模式也是如此.
访客设计模式与迭代器设计模式有何不同?另外C#如何使用访问者设计模式实现(模拟)"Double Dispatch"?有一些代码插图的任何想法.
jno*_*ovo 14
通过使用访问者模式,您可以将对某些数据结构执行的操作与特定结构分离 - 即您定义了一些不关心将应用于哪些数据的算法.它实际上是为了解决修改无法修改的类行为的问题.
所述迭代器图案解耦勘探的数据结构的从特定结构.
您可以完美地结合使用两者:使用迭代器移动数据结构的每个项目,并将访问者传递给每个项目,以便外部负责人执行项目的某些操作.
IEnumerable在.NET中实现了Iterator模式.假设您有一个Item类,该Visit方法接受IVisitor访问者实现的接口,并从该接口调用某个方法来调用访问者操作.然后,您将使用迭代器访问集合中的每个项目:
IEnumerable<Item> itemCollection = new List<Item>(...);
IVisitor visitor = new VisitorImplementation();
foreach (Item item in itemCollection)
item.Visit(visitor);
Run Code Online (Sandbox Code Playgroud)
关于你的第二个问题,你可能会发现访问者模式上的这个伟大的MSDN关键字和双重调度很有用.它提供了对访客模式的更好解释,同时也专注于该主题.
| 归档时间: |
|
| 查看次数: |
2851 次 |
| 最近记录: |