【发布时间】:2021-02-03 07:02:39
【问题描述】:
例如,假设我有一个带有一堆节点的有向无环图。我想遍历图,但是每个节点都有一个保护条件。例如,如果节点A的值小于10,我只能遍历到节点B。所以我创建了一个名为IsActive的方法,它是特定于每个节点的。我尝试使用抽象类方法对此进行建模:
abstract class Node
{
public int value;
public abstract bool IsActive();
}
class NodeB : Node
{
public override bool IsActive()
{
// return nodeA.value < 10
}
}
但是,我想避免为每个节点创建一个新类。那么在实例级别初始化/实现方法的最佳方法是什么?我做了一些其他的事情,但我真的不确定“最好”的方法是什么......
谢谢!
【问题讨论】:
-
您对“最佳方式”的标准是什么?
-
保护子句是如何定义的?它取决于价值,还是可以是任何条款?例如仅在星期一?也许您可以使用委托来确定节点是否处于活动状态并仅注入“Action
”? -
我猜,什么会被认为是最佳实践。使用在实例级别初始化/实现的方法来定义类的常规方法是什么?
-
它可以是任何条件,所以它可能是 A > 10 && C C 等
-
在基类中为
IsActive提供默认实现并使其成为虚拟?还是将IsActive设为可以设置的属性?或者您所说的“避免为每个节点创建一个新类”是什么意思?您想要每个节点的类的实例,不是吗?
标签: c# oop interface abstract-class