【问题标题】:Implement a function as a member of utility将函数实现为实用程序的成员
【发布时间】:2013-01-15 19:24:58
【问题描述】:
假设我有一个类,其中包含与该类中的另一个成员有关的对象。
让我们以库为例。如果我有一个书籍数据库,并且我的班级称为 User。用户有一个名为 name 的成员。用户有一个对象(比如一个列表),其中包含从图书馆借来的所有书籍。用成员对象“name”中的书籍填充成员列表“booksBorrowed”的函数应该在哪里
我是在名为 getBooks( ... ) 的类之外实现一个辅助函数,它接受用户类类型,还是应该将该函数作为类的成员来实现?显然,如果我实现为实用程序函数,我显然需要提供包装器来填充用户类中的列表对象。
谢谢,
托马斯
【问题讨论】:
标签:
function
member
utility
【解决方案1】:
在选择在用户中拥有一个成员列表“booksBorrowed”之前我会仔细考虑,因为很难确保图书馆和所有用户始终保持一致,例如确保同一本书不会同时出现在多个用户的“booksBorrowed”列表中。
我的倾向是在图书馆中有一个“bookList”,其中包含所有书籍(无论是否借用),以及每个 Book 对象中的一个“位置”字段,该字段是对特定用户或对特定用户的引用库(或者在后一种情况下为 null,也许)。由于“位置”字段只能有一个值,因此一本书不可能同时位于两个位置。
在任何给定时间,然后可以通过调用库中返回给定用户的此类列表的成员函数来获取给定用户的“booksBorrowed”列表。
如果由于“booksBorrowed”成员函数每次可能必须搜索数百万本书来创建列表而导致效率问题,则可以通过让 Library 为每个用户更新 Library 对象中的“booksBorrowed”列表来进行优化,每次借书或归还书。但是,这不会改变我概述的用户界面,因此我倾向于不进行此优化,直到性能考虑表明需要它。