2013-01-15 63 views
0

假設我有一個類,其中包含的對象是關於該類中的另一個成員的。作爲實用工具的成員實現一個功能

讓我們用一個庫的例子。如果我有一本書的數據庫,並且我的課程叫做用戶。用戶有一個名爲成員。用戶擁有一個包含庫中所有借書的對象(如列表)。我應該在名爲getBooks(...)的類的外部實現一個輔助函數,它接受一個用戶類類型,或者應該使用成員對象「名稱」中的書來填充成員列表「booksBorrowed」0123我作爲類的成員實現函數?顯然,如果我作爲一個效用函數實現,我顯然需要提供用於在用戶類中填充列表對象的包裝器。

感謝, 托馬斯

回答

0

我覺得很難選擇到有用戶成員列表「booksBorrowed」在衆人面前,因爲這將是很難確保庫,所有用戶都始終保持一致,例如,以確保同一本書不會同時出現在多個用戶的「booksBorrowed」列表中。

我的傾向是在圖書館中有一個包含所有書籍(無論是否借書)的「bookList」,以及每個Book對象中的「位置」字段,它是對特定用戶的引用或圖書館(或者在後一種情況下,也許是空的)。由於「位置」字段只能有一個值,因此一本書不可能同時在兩個位置。

在任何給定時間,然後可以通過調用庫中的成員函數來獲得給定用戶的「booksBorrowed」列表,其返回給定用戶的這種列表。

如果由於「booksBorrowed」成員函數每次需要搜索數百萬本圖書以創建列表而導致效率問題,可以通過讓Library爲每個用戶更新Library對象中的「booksBorrowed」列表進行優化,每次借書或歸還書籍。但是,這並不會改變我所概述的用戶界面,所以我會傾向於不進行此優化,除非性能方面的考慮表明它需要它。