我正在创建一个面向对象的小说或书籍的表现形式。我正在寻找关于制作对象的内容以及制作另一个对象的属性的设计模式或建议。
例如,假设我对小说中的人物以及他们出现的章节和页面感兴趣。
我正在努力的概念是如何组织一个具有两种类型“容器”的对象系统,这两种“容器”都参与与相同实例的关系。我想这会出现在其他系统中,其中存在隐含的“物理”和基础数据的“逻辑”视图。
这里有各种各样的对象:小说,章节,页面,字符。
这些可能的对象之间存在各种关系:
这些目标的目的是回答以下问题:
我对如何处理这种设计感到有点迷茫。我看到了一些方法:
将所有内容(小说,章节,页面,字符)设为对象,并且每个对象都包含对其包含/相关的其他对象的引用列表
优先考虑章节或页面中的一个或另一个,并使另一个属性成为第一个属性。例如,我们可以只使用Novel,Chapter和Character对象列表,并使“pages”成为Chapter对象的属性。
我们可以进一步采用上述想法,只需坚持使用Novel和Character,并为每个Character赋予一些属性,例如:“在章节中发生”和“在页面上发生”
嗯,我希望这对于一些OO设计大师来说足够明确,可以建议在Object或Attribute之间绘制线条的方法,以及如何设计一个对象系统,其中有不同种类的容器(Chapter,Page)。兴趣(Character)属于。
答案 0 :(得分:0)
重要的是,您已声明软件的目的是回答有关该书的各种问题,包括在给定页面上出现的字符。
这告诉我们两件事:
您的设计将受到很大影响 需要回答的问题的范围,如此 确定您的系统是否会:
我怀疑在您的情况下组合可能是正确的,因此您的“原始数据”将以与您提到的第一种方法类似的方式表示:
使一切(小说,章节,页面,角色)成为一个对象,每一个 这些对象中包含对其包含的其他对象的引用列表 /与“
相关
除了Page
的实例引用Text
的实例,而不是Character
,而后者将成为元数据类。
可以预先缓存元数据,也可以通过拖网原始数据按需生成元数据。
无论哪种方式,您都希望规范化数据模型,