自引用有序对象树的设计模式(C#/ASP.Net Core/EFCore)



首先,如果我自己能通过搜索找到这个,我很抱歉。。。我已经生疏了,正在学习很多新东西,所以我甚至不确定我是否用了正确的术语来描述我想要的东西——请不要踢角落:)

问题:第1部分-具体场景我正在尝试构建类来生成一个"目标对象"树,其中

a) 订单很重要,需要保留,

b) 树中的每个目标对象都可以单独作为一个对象,或者包括一组子目标(以及这些子目标进一步的子目标等,比如深度为5级),

c) 有效编辑树的能力是必要的(包括更改任何目标对象的顺序或索引,添加/删除/重新排序/移动子目标,修剪/向树添加分支)。我当然可以找到一种方法来做到这一点,但我强烈怀疑,无论是在内存/处理方面,还是在管理编辑所需的代码数量方面,我的方法都会非常低效。

我的问题是:有人能给我指一个设计模式或教程吗?它会向我展示一种有效的方法,或者我可以适应的类似方法?(我目前在C#和ASP.NET Core中工作,EFCore指向SQL服务器)

第2部分:对于一本书/网站,如果有一套优秀的适合C#的基本设计模式,我们也欢迎推荐。

非常感谢你能提供的任何帮助。Chris

尝试回答我自己的问题:

第1部分:到目前为止,我发现最接近的是Composite设计模式,它使用了一个抽象类,叶类和Composite类从中继承。然而,我认为我必须添加a)将叶子转换为复合物的机制,反之亦然,b)从我所看到的情况来看,这种模式并不能解决"订单事项和更改"的约束,所以我必须实现一些订单索引并按顺序管理更改-有人有有效的方法来做这些事情吗?

第二部分:发现"四人帮"http://www.dofactory.com/net/design-patterns,所以认为第2部分已经结束,但显然欢迎任何其他建议。

听起来你不是在寻找编程模式,而是在寻找数据结构。

看看红黑树。

这是一个(准)平衡树,它保留了节点的顺序,并且所有运算都是对数的(即有效的)。

最新更新