কাপল্ড (dependent) অবজেক্টগুলাকে ডিকাপল্ড (independent) অবজেক্টে রূপান্তর করার প্রক্রিয়াকে ডিপেন্ডেন্সি ইনজেকশন (Dependency Injection) বলা হয়।
ডিপেন্ডেন্সি ইনজেকশনের প্রকার
- কন্সট্রাক্টর ইনজেকশন (Constructor Injection)
- সেটার ইনজেকশন (Setter Injection)
- ইন্টারফেস-ভিত্তিক ইনজেকশন (Interface-based injection)
- সার্ভিস লোকেটর ইনজেকশন (Service Locator Injection)
ইন্টারফেস ইনজেকশন
ইন্টারফেস ইনজেকশন গেটার এবং সেটার DI-র মতো, কিন্তু ডিফল্ট গেটার/সেটারের বদলে এটি একটি এক্সপ্লিসিট গেটার/সেটার হিসেবে ইন্টারফেস প্রপার্টি সেট করে।
উদাহরণ
public interface IService
{
string ServiceMethod();
}
public class ClaimService : IService
{
public string ServiceMethod()
{
return "ClaimService is running";
}
}
public class AdjudicationService : IService
{
public string ServiceMethod()
{
return "AdjudicationService is running";
}
}
interface ISetService
{
void setServiceRunService(IService client);
}
public class BusinessLogicImplementationInterfaceDI : ISetService
{
IService _client1;
public void setServiceRunService(IService client)
{
_client1 = client;
Console.WriteLine("Interface Injection ==> Current Service : {0}", _client1.ServiceMethod());
}
}
ব্যবহার (Consuming)
BusinessLogicImplementationInterfaceDI objInterfaceDI = new BusinessLogicImplementationInterfaceDI();
objInterfaceDI = new ClaimService(); // ত্রুটি: টাইপ মিসম্যাচ, সঠিকভাবে নিচে দেখানো হয়েছে
objInterfaceDI.setServiceRunService(serviceObj);
সংশোধিত ব্যবহার:
var objInterfaceDI = new BusinessLogicImplementationInterfaceDI();
IService serviceObj = new ClaimService();
objInterfaceDI.setServiceRunService(serviceObj);
মূল বিষয়: ইন্টারফেস ইনজেকশনে ডিপেন্ডেন্সি সেট করার জন্য একটি পৃথক ইন্টারফেস (ISetService) ব্যবহার করা হয়, যা লুজ কাপলিং নিশ্চিত করে।