मैं ज़ेन फ्रेमवर्क घटकों के आधार पर बड़े पैमाने पर एक सीएमएस विकसित कर रहा हूं। इस सीएमएस के लिए डेटाबेस तालिकाओं में से कुछ के रूप में पालन कर रहे हैं:मॉडल के Granularization?
site
| id | name |
-------------
locale
| languageCode | regionCode |
-----------------------------
site_locale // link sites with locales
| siteId | languageCode | regionCode | isActive | isDefault |
-------------------------------------------------------------
मैं, होते हैं जो दूसरों के बीच निम्न विधियों में से, एक मॉडल Site
नामित किया है:
getId()
getName()
listLocales() // list all locales for this site
मैं पर एक तरह से कर रहा हूँ मैं मॉडल कैसे granularized परिभाषित करना चाहिए पर बाड़:
एक विकल्प SiteLocale
वस्तुओं लौटने के लिए होगा/मॉडल listLocales()
विधि, जहां इन SiteLocale
वस्तुओं सह से (दूसरे शब्दों एक डीबी तालिका प्रतिनिधित्व में) निम्न विधियों ntain:
getSite() // returns the Site model
getLocale() // returns a Zend_Locale
isActive() // is this locale active for the site this model represents?
isDefault() // is this the default locale for the site this model represents()
अन्य विकल्प बस Site
मॉडल में निम्न विधियों में बनाने के लिए किया जाएगा, और यह के साथ किया जा:
getDefaultLocale() // simply return the default site locale as Zend_Locale
listActiveLocales() // simply return all active site locales as Zend_Locales
listAllLocales() // simply return all site locales as Zend_Locales
आप क्या महसूस करते हैं करने के लिए सही तरीका है चले जाओ? और क्यों?
इसके अलावा, क्या पहला विकल्प (या शायद दोनों विकल्प) Law of Demeter का उल्लंघन करेगा?
संपादित (22 जनवरी)
हालांकि मैं Jeff's जवाब, मैं अभी भी नए/अन्य दृष्टिकोण के लिए खुला पसंद है।
हाय जेफ, आपकी प्रतिक्रिया के लिए धन्यवाद।डुप्लिकेशंस के बारे में, मैं रेफरेंशियल अखंडता बाधाओं (इनो डीबी) का उपयोग कर रहा हूं, इसलिए भाषा कोड और क्षेत्रकोड बाधाओं के साथ विदेशी कुंजी हैं। मुझे इस शैली को पसंद है क्योंकि यह लोकेल टेबल में शामिल होने के बिना कई से कई पंक्तियों को लाने में आसान बनाता है। लेकिन मैं साइटों से decoupled स्थानीय जोड़ने में सक्षम होना चाहता हूँ। उम्मीद है कि यह समझ में आता है। वैसे भी, मैं देख रहा हूँ कि आप क्या कह रहे हैं। मुझे लगता है कि आपने मुझे दोनों विकल्पों का उपयोग करने के लिए आश्वस्त किया है, क्योंकि मैं आपके द्वारा वर्णित परिदृश्य दोनों का उपयोग कर रहा हूं (पहले फ्रंटेंड में, व्यवस्थापक बैकएंड में दूसरा)। आपके सहयोग के लिए धन्यवाद। –
धन्यवाद फिर जेफ। मैं अपना केक रखना चाहता हूं और इसे भी खाऊंगा। :) –