代码之家  ›  专栏  ›  技术社区  ›  Scrot Heed

设计:访问子集合,同时避免父集合!

  •  0
  • Scrot Heed  · 技术社区  · 15 年前

    注意:WinForms C早期学习水平!

    我希望得到一些帮助,以最好的方式在C对象环境中实现一种情况。我不能发布代码,因为它还不存在,但是我可以给你一个可选的现实比较。

    简单来说(因为我就是这样工作的)我有一个读书班。我有收藏( <List> )这些书的课程。 在每堂课上,我都有一本书( <列表> )章节类。Book类和Chapter类基于完全不同的抽象类。这些定义在单独的业务层中,数据从数据源层加载。记住有许多书和许多章。

    从我的GUI层,我可以基于集合索引/键检索一本书及其底层属性。我也可以通过书本课得到书中的所有章节。

    我需要做的是能够从任何一本书中获得任何章节课程,而无需通过书籍课程。 最好的办法是什么?

    谢谢你们

    3 回复  |  直到 15 年前
        1
  •  2
  •   djna    15 年前

    你所说的“得到”是什么意思?你希望所有章节都在记忆中吗?或者我们正在搜索数据库?

    什么信息可以识别章节?

    让我们假设所有章节(或者如果不是章节的全文,那么是章节描述符)都在内存中。你有一个章节的集合,由章节性键控(可能是bookid+chapternumber)。

    所以这只是

    ChapterCollection.getById(aChapterId);
    

    添加书籍时,需要将其所有章节添加到集合中。

    更可能是来自数据库。因此,您希望能够按ID检索章节。这一切都取决于您如何进行持久性,但在概念上,从检索器的角度来看,可以类似于内存中的示例。

        2
  •  1
  •   dnatoli    15 年前

    为什么你不想上读书课?实际上,您只有两个选项——搜索Book类对象的列表或维护包含所有书籍中所有章节的辅助集合对象。 我假设有一个你要搜索的键,这是章节类的一个属性?如果是这样的话,你可以使用一个字典(键,章),它在搜索时会很快,或者保留一个列表(章),然后使用LINQ来搜索它。 这取决于你在搜索什么,以及你为什么不上书本课。

        3
  •  0
  •   awe    15 年前

    如果您没有浏览Book类,则需要有一个“库”集合,其中包含对所有章节对象的引用。