我有这样的类层次结构:
+-- 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)中添加一个 Display
或 Render
方法。这具有将 View 耦合到模型的副作用,我真的很想避免这种情况。
最佳答案
你要找的是 visitor pattern ,我认为。
关于c# - 有没有比使用层次结构更好的显示对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/186649/