c# - 有没有比使用层次结构更好的显示对象的方法?

标签 c# design-patterns

我有这样的类层次结构:

        +-- VirtualNode
        |
INode --+                  +-- SiteNode
        |                  |
        +-- AbstractNode --+
                           |
                           +-- SiteSubNode

以及相应的 NodeCollection 类,该类构建于 INode 之上。为了显示 NodeCollection,我需要知道每个成员的最终类型。所以我需要这样的功能

foreach (INode n in myNodeCollection)
{
    switch(n.GetType())
    {
        case(typeof(SiteNode)):
        // Display n as SiteNode
    }
}

现在,这确实不是一种面向对象的方式。 在您看来,是否有任何模式或推荐的方法来做同样的事情?

编辑
我已经想到在 INode 接口(interface)中添加一个 DisplayRender 方法。这具有将 View 耦合到模型的副作用,我真的很想避免这种情况。

最佳答案

你要找的是 visitor pattern ,我认为。

关于c# - 有没有比使用层次结构更好的显示对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/186649/

相关文章:

c# - Visual Studio 版本中 'Optimize code' 选项的好处

javascript - 访问 aspx 页面的客户端 javascript block 中由 RegisterClientScriptBlock 注入(inject)的 javascript 代码

c# - 使用加载外部程序集/dll 的 Windows 服务正确处理错误

c# - Magick.net 比较

c# - C#中基于任务的异步方法的超时模式

java - 如何删除注册/添加的监听器?

java - 我应该使用哪种设计模式在 java 中构建 GUI 以及以下场景?

java - 重构代码以尊重 OOP 原则

JavaScript继承模式

c# - #if DEBUG 与 if (env.IsDevelopment())