C# 公共链接应该拥有两个节点,还是每个节点都应该拥有一个公共链接?
我正在设计一个有链接和节点的应用程序。链路两端的每一端连接到一个节点,每个节点可以连接到多个链路 设计链接类和节点类自然有两种方法。第一:链接自己的节点。节点将不知道链接C# 公共链接应该拥有两个节点,还是每个节点都应该拥有一个公共链接?,c#,oop,graph,orm,C#,Oop,Graph,Orm,我正在设计一个有链接和节点的应用程序。链路两端的每一端连接到一个节点,每个节点可以连接到多个链路 设计链接类和节点类自然有两种方法。第一:链接自己的节点。节点将不知道链接 class Link { public Node First {get; set;} public Node Second {get; set;} public string Name {get; set;} public double Length {get; set;} public
class Link
{
public Node First {get; set;}
public Node Second {get; set;}
public string Name {get; set;}
public double Length {get; set;}
public double Strength {get; set;}
}
class Node
{
// ...
}
第二:节点拥有链接。链接将没有点头的知识
class Link
{
public string Name {get; set;}
public double Length {get; set;}
public double Strength {get; set;}
}
class Node
{
public IList<Link> Links {get; set;}
//...
}
类链接
{
公共字符串名称{get;set;}
公共双长度{get;set;}
公共双强度{get;set;}
}
类节点
{
公共IList链接{get;set;}
//...
}
我不赞成第二种设计,因为它意味着可能有两个以上的节点连接到同一条链路。此外,它不允许节点实例找到其链接的伙伴。如果是这种情况,则很难取消链接(想象一下,将节点的链接
属性设置为空-其伙伴仍将持有对链接的引用
)
另一方面,第一种设计意味着需要跟踪链接
实例。例如,删除链接的节点会导致需要显式删除相应的链接
实例(除非我们允许链接中对节点的引用为空-但我也希望避免这种情况)
从面向对象的角度来看,您认为哪一个更正确?假设您试图在内存中存储图形,我是否正确?如果是,有三种方法可以存储它:
链接的附加信息,我不建议这样做
链接
要么是节点
相互了解:
class Link
{
public Node First {get; set;}
public Node Second {get; set;}
public string Name {get; set;}
public double Length {get; set;}
public double Strength {get; set;}
}
class Node
{
public IList<Link> Links {get; set;}
//...
}
类链接
{
公共节点第一个{get;set;}
第二个公共节点{get;set;}
公共字符串名称{get;set;}
公共双长度{get;set;}
公共双强度{get;set;}
}
类节点
{
公共IList链接{get;set;}
//...
}
- 关于堆栈溢出
列表或任何其他集合作为其属性之一。我同意@AlexeiLevenkov的观点:这两种方法都不正确。还有第三个选项:顶级映射
对象“拥有”链接
s和节点s,并处理所有操作。链接
的责任是什么?如果它只提供节点之间的连接,那么您可以在节点中使用List
。@RoadieRich这不是他的要求。他询问如何使用第一个选项或第二个选项实现链接
和节点
类。在这两种情况下,都可以实现Map
类。事实上,我正在尝试使用ORM将图形存储在关系数据库中:)更新了答案,希望这有帮助