我正在创建一个小说或书籍的面向对象表示。我想寻求关于如何制作对象以及将什么作为另一个对象的属性的设计模式或建议。
例如,假设我对小说中的角色以及他们出现在哪些章节和页面感兴趣。
我正在努力理清一个带有两种类型“容器”的对象系统如何组织,这两种类型的容器都与相同的实例参与关系。我想象这种情况也会出现在其他系统中,其中底层数据存在隐喻性的“物理”和“逻辑”视图。
这里可能有各种各样的对象:小说、章节、页面、角色。
这些可能对象之间存在着多种关系:
- 小说由一系列章节、一系列页面和一组角色组成 - 章节由一系列页面和零个或多个角色组成 - 页面与一个或多个章节相关联,与零个或多个角色相关联 - 角色与一个或多个页面和章节相关联
这些对象的目的是回答以下问题:
- Alice出现在哪些页面上? - 有哪些角色出现在第6章? - 哪些角色经常同时出现在同一页上? - Bob第一次在哪一页提到?
我有点迷失在如何处理这种设计方案的思路中。我看到了几种方法:
- 使所有对象(小说、章节、页面、角色)都成为对象,每个对象都有对其包含/相关对象的引用列表 - 给章节或页面中的一个赋予首要地位,并将另一个作为第一个对象的属性。例如,我们可以只使用小说、章节和角色对象列表,并将“页面”作为章节对象的属性。 - 我们甚至可以进一步采取上述想法,只使用小说和角色,并给每个角色一些属性,例如:“出现在章节”和“出现在页面”。
希望这足够清晰,让面向对象设计专家建议如何划分对象或属性之间的界限,以及如何设计一个对象系统,其中存在不同类型的容器(章节、页面),感兴趣的对象(角色)属于这些容器之一。
例如,假设我对小说中的角色以及他们出现在哪些章节和页面感兴趣。
我正在努力理清一个带有两种类型“容器”的对象系统如何组织,这两种类型的容器都与相同的实例参与关系。我想象这种情况也会出现在其他系统中,其中底层数据存在隐喻性的“物理”和“逻辑”视图。
这里可能有各种各样的对象:小说、章节、页面、角色。
这些可能对象之间存在着多种关系:
- 小说由一系列章节、一系列页面和一组角色组成 - 章节由一系列页面和零个或多个角色组成 - 页面与一个或多个章节相关联,与零个或多个角色相关联 - 角色与一个或多个页面和章节相关联
这些对象的目的是回答以下问题:
- Alice出现在哪些页面上? - 有哪些角色出现在第6章? - 哪些角色经常同时出现在同一页上? - Bob第一次在哪一页提到?
我有点迷失在如何处理这种设计方案的思路中。我看到了几种方法:
- 使所有对象(小说、章节、页面、角色)都成为对象,每个对象都有对其包含/相关对象的引用列表 - 给章节或页面中的一个赋予首要地位,并将另一个作为第一个对象的属性。例如,我们可以只使用小说、章节和角色对象列表,并将“页面”作为章节对象的属性。 - 我们甚至可以进一步采取上述想法,只使用小说和角色,并给每个角色一些属性,例如:“出现在章节”和“出现在页面”。
希望这足够清晰,让面向对象设计专家建议如何划分对象或属性之间的界限,以及如何设计一个对象系统,其中存在不同类型的容器(章节、页面),感兴趣的对象(角色)属于这些容器之一。