चलिए DAO पैटर्न का एक सरल उदाहरण मानते हैं। Person
एक मान ऑब्जेक्ट है और PersonDAO
संवाददाता विशेषता है, जो डेटाबेस को Person
को संग्रहीत/पुनर्प्राप्त करने के तरीके प्रदान करता है। क्या स्कैला में डीएओ पैटर्न अप्रचलित है?
trait PersonDAO { def create(p:Person) def find(id:Int) def update(p:Person) def delete(id:Int) }
हम इस पैटर्न का उपयोग करते हैं (उदाहरण के लिए Active Record के विपरीत), यदि हम व्यवसाय डोमेन और दृढ़ता तर्क को अलग करना चाहते हैं।
क्या होगा यदि हम इसके बजाय another approach का उपयोग करें? हम यह करने के लिए Person
से PersonDatabaseAdapter
trait PersonDatabaseAdapter{ def create def retrieve(id:Int) def update def delete }
और अंतर्निहित रूपांतरण पैदा करेगा।
implicit def toDatabaseAdapter(person:Person) = new PersonDatabaseAdapter { def create = ... def retrieve(id:Int) = ... def update = ... def delete = ... }
अब अगर हम इन रूपांतरण आयात, हम ग्राहक कोड Persons
और दुकान में हेरफेर करने के बारे में/निम्नलिखित तरीके से डेटाबेस से/उन्हें प्राप्त कर सकते हैं:
val person1 = new Person ... person1.create ... val person2 = new Person ... person2.retrieve(id) ...
इस कोड Active Record
लेकिन तरह लग रहा है व्यापार डोमेन और दृढ़ता अभी भी अलग हैं।
क्या यह समझ में आता है?
क्या आप जानते हैं कि स्कैला की सिंथेटिक चीनी लागू होने के बाद यह डीएओ पैटर्न के समान ही कार्य करता है? – pedrofurla