假設我們有3個實體:Library,Section & Book。簡單應用的類圖
A Library
由幾個Sections
組成。 A Section
有幾個Books
。
A Book
可能只屬於1 Section
。最後一個Section
可能只屬於1 Library
。
我看到它的方式是,類Library
聚集的Sections
和類Section
聚集的Books
集合的集合。
現在我需要將所有圖書上傳到服務器。我構建了一個類BookUploader
,它在構造函數中使用Book對象。在服務器上,我爲每個庫創建一個文件夾,並在每個庫內創建一個Section文件夾,並將Book放入其中。
問題是因爲我將Book對象傳遞給BookUploader我不知道Section是什麼。另外我不知道哪一部分屬於哪個圖書館。
所以我想我只是將庫對象傳遞給BookUploader,然後循環所有部分,然後循環每個部分中的所有書籍,但有人告訴我,現在BookUploader依賴3個類來上傳書籍,這是一個糟糕的設計。
他建議每個Book對象都應該保存它的Section,每個Section應該保存它的Library,它是我原始設計的總逆向。
任何人都可以分享他的想法,哪個設計更好,爲什麼?
在此先感謝。
您的設計如何強制「書」在一個部分?你的意思是它迫使一本書的實例在一個單獨的部分?如果是這樣,那確實如此,但是同一本書的多個「副本」呢,除非你小心總是正確地構建它們,否則這些副本可能會在多個部分中傳播。既然你是在模擬現實世界的情況,想想它在現實世界中的處理方式。一本書幾乎總是以某種方式蓋上圖書館和部分信息,而圖書館/部分也可能有一本書可用的清單... – Chad 2012-03-03 15:09:45
@Chad是的,在我的設計中只有一本書的副本。我的問題是哪個對象應該包含其他對象? Library對象應該保存一個Sections集合還是每個Section都應該保存一個Library對象? – Songo 2012-03-03 15:24:41
這看起來非常合適,但回到了關於如何處理book-> library關係的原始問題(與您迄今試圖建模的相反)。假設(IRL)你在外面找到一本圖書館。你怎麼知道這是一本圖書館書?書上有一些標記可以告訴你嗎?我敢打賭,有... – Chad 2012-03-04 15:48:27