如何解决在这种情况下如何避免类型检查参数
我想实现一个基本的Graph结构,以后可以扩展到更特定类型的Graph(对话,行为...),每个图形还需要从Node基类派生的特定类型的节点。 /> 我的Graph基类现在看起来像这样
public abstract class Graph {
private Dictionary<Node,List<Node>> adjList;
public abstract void AddNode(Node node);
public abstract void RemoveNode(Node node);
public abstract void AddEdge(Node node,Node destNode);
public abstract void RemoveEdge(Node node,Node destNode);
}
我的问题是我必须在这些方法的实现中进行类型检查,以防止用户将DialogueNode添加到QuestGraph。是否有任何设计模式可以解决此问题?还是我应该没有基类并且多次编写一些代码?
解决方法
我的问题是我必须在实施中进行类型检查 防止用户添加例如 DialogueNode到QuestGraph。
您可以定义一个抽象的通用类,并为每个实现指定一个特定的Node子类型。
例如在Java中:
public abstract class Graph<T extends Node> {
private Dictionary<T,List<T>> adjList;
public abstract void AddNode(T node);
public abstract void RemoveNode(T node);
public abstract void AddEdge(T node,T destNode);
public abstract void RemoveEdge(T node,T destNode);
}
QuestGraph
子类可能类似于:
public class QuestGraph extends Graph<QuestNode> {
public void AddNode(QuestNode node){...}
public void RemoveNode(QuestNode node){...}
// And so for ...
}
是否有任何设计模式可以解决此问题?
设计模式不会强制执行此类规则,并且通常也不会限制多态性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。