কঠোরভাবে বলতে, নির্ভরতা ইনজেকশন শুধুমাত্র সত্যিই বিরোধিতা নয় নির্ভরতা ইনজেকশন এবং সেইজন্য কোন নির্ভরতা ব্যবস্থাপনা কৌশল যার দ্বারা - নয় নির্ভরতা ইনজেকশন।
[অযাচিত] সংযুক্তি, যদিও একেবারে অর্থোগোনাল ইস্যু নয়, হয় হয় তা হয় বা উভয় উপায়ে প্রশমিত করা যায়। এই উভয় মিলিত হয় DependencyClass
:
public DependencyInjectedConstructor(DependencyClass dep) {
dep.do();
}
public DependencyLookupConstructor() {
var dep = new DependencyClass();
dep.do();
}
DependencyLookupConstructor
DependencyClass
এই ক্ষেত্রে একটি বিশেষ সাথে মিলিত হয় । তবে, তারা দুজনেই মিলিত হয়েছে DependencyClass
। আসল অশুভতা, যদি এখানে একটি থাকে তবে এটি সংযুক্তিটি অগত্যা নয়, হঠাৎ তার নিজস্ব নির্ভরতা 1 টি ইনজেকশনের প্রয়োজন DependencyLookupConstructor
হলে এটি পরিবর্তন করা DependencyClass
দরকার ।
তবে এই নির্মাতা / শ্রেণিটি আরও স্বচ্ছলভাবে মিলিত হয়েছে:
public DependencyLocatingConstructor() {
var dep = ServiceLocator.GetMyDoer();
dep.do();
}
আপনি যদি সি # তে কাজ করছেন, উপরোক্তগুলি যখন ডাকে তখন ServiceLocator
আপনাকে কিছু ফেরত দেওয়ার অনুমতি দেবে GetMyDoer()
, যতক্ষণ না এতে do()
যা DependencyLocatingConstructor
আছে তা পারে do()
। আপনি সম্পূর্ণ ইন্টারফেস 2 এর সাথে মিলিত না হয়েও সংকলন-সময় স্বাক্ষর বৈধতার সুবিধা পাবেন ।
সুতরাং, আপনার বিষ বাছাই করুন।
তবে মূলত, যদি নির্ভরতা ইনজেকশনের একটি "বিপরীত" থাকে তবে এটি "নির্ভরতা পরিচালনার কৌশলগুলি" এর রাজত্বের অন্য কিছু হবে। অন্যদের মধ্যে, আপনি যদি কথোপকথনে নিম্নলিখিতগুলির কোনওটি ব্যবহার করেন, তবে আমি এটিকে নির্ভরতা ইনজেকশন হিসাবে না হিসাবে চিহ্নিত করতাম :
- পরিষেবা লোকেটার প্যাটার্ন
- নির্ভরতা লোকেটার / অবস্থান
- সরাসরি অবজেক্ট / নির্ভরতা নির্মাণ
- লুকানো নির্ভরতা
- "নির্ভরতা ইনজেকশন নয়"
1. হাস্যকরভাবে, ডিআই উচ্চতর স্তরে সমাধান করে এমন কিছু সমস্যা হ'ল নিম্ন স্তরে ডিআই ব্যবহার করে [অতিরিক্ত-] ফলাফল। আমি অপ্রয়োজনীয় জটিলতা সঙ্গে codebases কাজ পরিতোষ ছিল করেছি সর্বাঙ্গে স্থান যেখানে যে জটিলতা আসলে সাহায্য মুষ্টিমেয় অমায়িক ফলে ... আমি বোঝা যাচ্ছে যে নেতারা খারাপ এক্সপোজার দ্বারা পক্ষপাতমূলক করছি।
২. পরিষেবা অবস্থান ব্যবহার করা আপনাকে অনুরোধ কোডগুলি থেকে কার্যকরভাবে একই ধরণের বিভিন্ন নির্ভরতা নির্দিষ্ট করার অনুমতি দেয় , যদিও নির্ভরতা কীভাবে তৈরি হয় সে সম্পর্কে এখনও অজানা ost মনে করুন আপনার সমাধান করতে হবে User
বা IUser
বিভিন্ন প্রয়োজনের জন্য: যেমন, Locator.GetAdministrator()
বনাম Locator.GetAuthor()
- বা যাই হোক না কেন। আমার কোডটি কী ইন্টারফেস সমর্থন করে তা জেনেও কীভাবে এটি কার্যকরীভাবে প্রয়োজন তা জানতে চাইতে পারে।