2009-05-26 21 views
27

फिलहाल, हमें एक ऐसा एप्लिकेशन बनाना है जो विरासत पर आधारित है। उस पुराने आवेदन के लिए कोड को फेंक दिया जाना चाहिए और फिर से लिखा जाना चाहिए, लेकिन जैसा कि आमतौर पर जाता है - इसे फिर से लिखने के बजाय, हमें उस पर कुछ नया आधार बनाना होगा। हाल ही में, हमने DomainDrivenDesign पथ जाने का निर्णय लिया है। तो - विरोधी भ्रष्टाचार परत हमारी समस्याओं का समाधान हो सकती है। जहां तक ​​मैं समझता हूं, इस तरह पुराने आवेदन को धीरे-धीरे फिर से लिखना संभव होना चाहिए।डीडीडी, भ्रष्टाचार विरोधी परत, कैसे करें?

लेकिन - मुझे कोई अच्छा उदाहरण नहीं मिल रहा है। मैं ANY जानकारी की सराहना करता हूं।

उत्तर

9

मेरी विशेष कार्यान्वयन में, EmployeeAccessService एक भंडार द्वारा कहा जाता है। यह वास्तव में भ्रष्टाचार विरोधी परत में एक मुखौटा है। यह कर्मचारी AccessAdapter को प्रतिनिधि करता है। एडाप्टर विरासत मॉडल (जो यह EmployeeAccessFacade से हो जाता है) से एक वस्तु को हासिल करेगा, तो EmployeeAccessTranslator को पास कर अपने आवेदन के मॉडल में डोमेन वस्तु को विरासत मॉडल से वस्तु को बदलने के लिए।

EmployeeAccessService

public Employee findEmployee(String empID){ 
    return adapter.findEmployee(empID); 
} 

EmployeeAccessAdapter

public Employee findEmployee(String empID){ 
    EmployeeAccessContainer container = facade.findEmployeeAccess(empID); 
    return translator.translate(container); 
} 

EmployeeAccessTranslator

public Employee translate(EmployeeAccessContainer container){ 
    Employee emp = null; 
    if (container != null) { 
     employee = new Employee(); 
     employee.setEmpID(idPrefix + container.getEmployeeDTO().getEmpID()); 
     ...(more complex mappings) 
+0

यह अच्छा लग रहा है। लेकिन मैंने अभी भी कोई कोड नहीं देखा है। :) –

27

DDD book (Domain-Driven Design: Tackling Complexity in the Heart of Software) एरिक इवांस द्वारा से:

भ्रष्टाचार विरोधी परत की सार्वजनिक इंटरफ़ेस आमतौर पर सेवा का एक सेट के रूप में प्रकट होता है, हालांकि कभी-कभी यह एक इकाई का रूप ले सकता है।

और थोड़ी देर बाद के डिजाइन भ्रष्टाचार विरोधी परत facades, Adaptors (दोनों गामा एट अल। 1995 से) के एक संयोजन के रूप में है के आयोजन का

एक ही रास्ता है, और अनुवादकों संचार और परिवहन तंत्र के साथ आमतौर पर सिस्टम के बीच बात करने की आवश्यकता होती है।

तो, आपको सुझाए गए adapter pattern और facade pattern पर उदाहरण देखकर उदाहरण मिल सकते हैं।

मैं व्याख्या करने के लिए क्या एरिक इवांस ने कहा कोशिश करता हूँ, अपने भ्रष्टाचार विरोधी परत अपने परत के बाहर करने के लिए सेवाओं के रूप में दिखाई देगा। तो भ्रष्टाचार विरोधी परत के बाहर अन्य परतों को पता नहीं चलेगा कि वे एक भ्रष्टाचार विरोधी परत के साथ "बोल" कर रहे हैं। परत के अंदर आप एडेप्टर और अग्रभाग का उपयोग अपनी विरासत जानकारी स्रोतों रैप करने के लिए होगा। भ्रष्टाचार विरोधी परत के बारे में

अधिक जानकारी:

+0

धन्यवाद। मैं अभी उनको जांचूंगा। लेकिन मुझे पहले से ही एक एहसास हुआ कि यह पर्याप्त नहीं होगा। क्या कोई कोड उदाहरण नहीं हैं? :) –

+0

http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_wrapper402122006091959AM/csharp_wrapper4.aspx यह एडाप्टर पैटर्न को समझने के लिए बहुत अच्छा है :) –

+1

लिंक अक्सर आवश्यक भ्रष्टाचार परत (http: // joeydotnet.com/blog/archive/2007/09/10/building-the-often-needed-anti-corruption-layer.aspx) और डीडीडी - एंटी भ्रष्टाचार परत (http://www.goeleven.com/blog/ entryDetail.aspx? प्रविष्टि = 168) टूटा –