我正在做一個簡單用例的面向對象設計的基本練習:書籍可以用很多標籤進行標記。書籍和標籤的OO設計
我有很多的解決方案,我希望你的意見能夠在OOD原則和可靠性方面更好。
選項1
public class Book {
private String title;
//... other attributes
private List<Tag> tags;
}
困擾我的是,我們混合一書的核心屬性與附加的分類或搜索數據的事情。我將來可能會有某些書無法加標籤的要求。在未來,當我添加更多responsabilities書類可以變得臃腫:類別,即讀取它的用戶,評級列表...
選項2
public class TaggedBook extends Book {
private Book book;
private List<Tag> tags;
}
我認爲這是類似於裝飾者模式,但我不認爲它適合在這裏,因爲我不擴展行爲。
選項3
解耦書籍和標籤comnpletely,並使用一個服務從一本書中檢索標籤(給每本書都有一個唯一的標識符)
List<Tag> TagService.getTags(Book book)
不過,我不知道找到這個解決方案非常優雅(是嗎?),我可能不得不發送兩個查詢:一個檢索該書,另一個檢索標籤。
我計劃申請其他要求的最佳選項:一本書有一個等級,一本書可以被分類...
我還計劃使用DMS存儲書籍和標籤的對象。由於它不是一個關係數據庫,它的模式可能會對應於類設計。
謝謝
「標籤」不是自己的實體嗎?如在,不僅僅是一個字符串 - 它可能有一個描述等... – cHao 2012-03-21 06:21:37
是的,謝謝,這是我的原創設計,但我忘了將它包括在問題 – 2012-03-21 06:24:59