मैं एक साधारण उपयोग के मामले के लिए ऑब्जेक्ट उन्मुख डिजाइन का मूल अभ्यास कर रहा हूं: एक पुस्तक को कई टैग के साथ टैग किया जा सकता है।किताबों और टैगों के ओओ डिजाइन
मेरे पास कई समाधान हैं, और मैं आपका इनपुट चाहता हूं जिस पर ओओडी सिद्धांतों और रखरखाव की अवधि में बेहतर है।
विकल्प 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)
हालांकि, मुझे नहीं पता इस समाधान को बहुत ही सुरुचिपूर्ण लगता है (है ना?), और मुझे दो प्रश्न भेजना पड़ सकता है: एक पुस्तक को पुनः प्राप्त करने के लिए, दूसरा टैग के लिए।
मैं अन्य आवश्यकताओं के लिए सबसे अच्छा विकल्प को लागू करने पर योजना बना रहा हूँ: एक पुस्तक रेटिंग है, एक पुस्तक वर्गीकृत किया जा सकता ...
मैं भी किताबें और टैग वस्तुओं स्टोर करने के लिए एक डीएमएस के प्रयोग पर योजना बना रहा हूँ। चूंकि यह संबंध डेटाबेस नहीं है, इसकी स्कीमा क्लास डिज़ाइन से मेल खाती है।
धन्यवाद
क्या "टैग" स्वयं की इकाई नहीं होगी? , के रूप में सिर्फ एक स्ट्रिंग की तुलना में अधिक है - यह एक वर्णन है और इस तरह ... – cHao
हाँ धन्यवाद हो सकता था, यह मेरा मूल डिजाइन था, लेकिन मैं जिस तरह से सवाल –