आप प्रतिबिंब का उपयोग क्यों करेंगे? क्यों बस नहीं:
SampleClass action = new SampleClass();
action.setRequest(request);
कि एक ही बात करता है, लेकिन अधिक पठनीय है, संकलक जाँच करने के लिए है कि प्रकार के और तरीकों वास्तव में मौजूद अनुमति देता है विधि लागू के लिए जावाडोक प्रदान करता है, करने में सहायता करने के लिए अपने आईडीई में सक्षम बनाता है refactorings, ...
और यह अभी भी निर्भरता इंजेक्शन है, क्योंकि कार्रवाई इसके अनुरोध की तलाश नहीं करती है, लेकिन प्रारंभिकरण के दौरान अनुरोध प्राप्त करती है।
संपादित करें: Thorbjørn ने अनुरोध किया कि मैं दिखाता हूं कि उस क्रिया का उपयोग कैसे किया जाएगा। यह भी इंजेक्शन (एक सेटर का उपयोग करके) किया जाएगा जो भी घटक कार्रवाई का उपयोग करता है। घटक इंजेक्शन एक्शन ऑब्जेक्ट का उपयोग करेगा। servlet
में एक ActionFactory
-इंजेक्षन सेटर
SampleClass action = new SampleClass();
action.setRequest(request);
Servlet servlet = new ActionBasedServlet();
servlet.setAction(action);
तो servlet
, कर सकते हैं action
से अधिक समय रहने के लिए है, यानी यह एक ताजा Action
हर बार यह एक जरूरत है का उपयोग करना चाहिए करना है एक के बजाय।
इस ठोस मामले में, मैं सवाल करता हूं कि कार्रवाई को वास्तव में अपने राज्य के हिस्से के रूप में अनुरोध रखने की आवश्यकता है या अपरिवर्तनीय हो सकता है और सर्वलेट द्वारा विधि पैरामीटर के रूप में पारित अनुरोध पर कार्य कर सकता है।उस मामले में, बूट समय प्रारंभ करना होगा:
SampleClass action = new SampleClass();
Servlet servlet = new ActionBasedServlet();
servlet.setAction(action);
और ActionBasedServlet
परिभाषित करेगा
public void serve(Request req, Response resp) {
foo();
action.act(req, resp);
bar();
}
मुझे "जादू द्वारा" शब्द पसंद है। प्रारंभिकरण कैसे हो रहा है। वसंत या इसी तरह के डी कंटेनर में यह कैसे किया जाता है। –
विचार इंजेक्शन कक्षा और इंजेक्शन दोनों कक्षाओं से शुरूआत को स्थानांतरित करना है, इसलिए वे नहीं जानते कि यह कैसा होता है। जहां आप इंजेक्शन कोड को स्थानांतरित करते हैं, कार्यान्वयन निर्भर है, और _you_ अनिवार्य रूप से जानने की आवश्यकता नहीं है। अंत में प्रतिबिंब का उपयोग किया जाता है लेकिन यह कहने जैसा है कि हाइबरनेट अंत में जेडीबीसी का उपयोग कर रहा है। –
मेरा इरादा अनुरोध ऑब्जेक्ट को डिस्पैचर फ़िल्टर से गतिशील रूप से विभिन्न नियंत्रक कक्षाओं में पास करना है, जहां हमें अनुरोध और प्रतिक्रिया ऑब्जेक्ट मिलते हैं। –