您将如何设置以下类结构,为什么?
Person类代表一个人 Class Room代表一个房间
我想在哪里存储一个人的房间位置,能够有效地提出以下两个问题:
1) X 在哪个房间?和, 2) Y 房间里有哪些人?
我可以看到的选项是:
- Person 类存储房间位置(问题 2 效率低下),
- Class Room 存储它的 Persons(问题 1 效率低下),
- 以上两者(数据完整性问题的机会)和,
- 外部字典保存数据(似乎违背了 OOP 的精神)
请您参考如下方法:
External dictionary holds the data (seems against the spirit of OOP)
或者您可以同时实现所有方法:您定义Person has a Room 和Room has many persons 这两个关联,并且您还使用适当的数据为所有内容建立索引结构以光速访问您的对象!
也就是说,您可以使用面向对象的关联(即组合)遍历您的对象图,并实现一些特定的要求,将您的图存储在某些数据结构中以满足您的要求。
这并不违背 OOP 的精神。它有利于良好的编码实践,而不是人为的教条。
