উত্তরগুলির মধ্যে পার্থক্যের মাত্রাটি বোঝায় যে এটি কেন বুঝতে পারা কঠিন ধারণা হবে তবে আমি যতটা বর্ণনা করতে পারি ঠিক ততটুকু রেখে দেওয়া:
আমার জানতে যাতে আমি যদি আপনার কাছে একটি বল ছুঁড়ে ফেলি তবে আপনি এটি ধরতে পারেন আপনার বয়স কত তা আমার সত্যিই জানতে হবে না। আপনি প্রাতঃরাশের জন্য আপনি কী খেয়েছিলেন তা আমার জানতে হবে না এবং আপনার প্রথম ক্রাশটি কে সে বিষয়ে আমি সত্যিই যত্নশীল নই। আমার যা জানতে হবে তা হ'ল আপনি ধরতে পারবেন। আমি যদি এটি জানি তবে আমি আপনার বা আপনার ভাইয়ের কাছে একটি বল ছুড়ে দিচ্ছি কিনা সে বিষয়ে আমি চিন্তা করি না।
সি # বা জাভা ইত্যাদির মতো অ-গতিশীল ভাষার সাহায্যে আমরা ইন্টারফেসের মাধ্যমে এটি সম্পন্ন করি। সুতরাং আসুন আমরা আমাদের নীচের ইন্টারফেস আছে বলতে পারি:
public ICatcher
{
public void Catch();
}
এবং এখন বলতে দিন যে আমাদের নিম্নলিখিত ক্লাস রয়েছে:
public CatcherA : ICatcher
{
public void Catch()
{
console.writeline("You Caught it");
}
}
public CatcherB : ICatcher
{
public void Catch()
{
console.writeline("Your brother Caught it");
}
}
এখন ক্যাচারএ এবং ক্যাচারবি উভয়ই ক্যাচ পদ্ধতিটি বাস্তবায়ন করে, সুতরাং যে পরিষেবাটির জন্য ক্যাচারের প্রয়োজন হয় সেগুলি সেগুলির মধ্যে উভয়ই ব্যবহার করতে পারে এবং এটি কোনটি আসলেই কোনও অভিশাপ দিতে পারে না। সুতরাং একটি শক্তভাবে দম্পতি পরিষেবা সরাসরি একটি ক্যাচ অর্থাত্ তাত্পর্যপূর্ণ করতে পারে
public CatchService
{
private CatcherA catcher = new CatcherA();
public void CatchService()
{
catcher.Catch();
}
}
সুতরাং ক্যাচ সার্ভিস ঠিক যা করতে পারে তা করতে পারে তবে এটি ক্যাচারএ ব্যবহার করে এবং সর্বদা ক্যাচারএ ব্যবহার করবে। এটি শক্তভাবে কোডিং হয়েছে, সুতরাং কেউ উপস্থিত না হওয়া এবং এটি পুনরুদ্ধার না করা পর্যন্ত এটি সেখানেই থাকে।
এখন আরেকটি বিকল্প গ্রহণ করা যাক, যার নাম নির্ভরতা ইনজেকশন:
public CatchService
{
private ICatcher catcher;
public void CatchService(ICatcher catcher)
{
this.catcher = catcher;
catcher.Catch();
}
}
সুতরাং ক্যাসস সার্ভিসকে ইনস্ট্যান্সেট করে এমন ক্যালস নিম্নলিখিতগুলি করতে পারে:
CatchService catchService = new CatchService(new CatcherA());
অথবা
CatchService catchService = new CatchService(new CatcherB());
এর অর্থ হ'ল ক্যাচ পরিষেবাটি ক্যাচারএ বা ক্যাচারবি এর সাথে শক্তভাবে মিলিত হয় না।
লসলি কাপলিং পরিষেবাদির জন্য যেমন আইওসি ফ্রেমওয়ার্কের ব্যবহার ইত্যাদির জন্য আরও বেশ কয়েকটি স্ট্রেরজি রয়েছে