সফটওয়্যার ইঞ্জিনিয়ারিং এ ডিপেন্ডেন্সি ইনজেকশন বহুল প্রচলিত একটা শব্দ। এটি এমন একটি পদ্ধতি যখন একটা অবজেক্ট অন্য একটা অবজেক্টের ব্যবহারের জন্য মেথড সরবারাহ করে থাকে। ডিপেন্ডেন্সি একটা অবজেক্ট হিসেবে ব্যবহৃত হয়।
ডিপেন্ডেন্সি ইনজেকশন বুঝতে হলে আমাদের আগে বুঝতে হবে ডিপেন্ডেন্সি কি জিনিস। ডিপেন্ডেন্সি বলতে আমরা বুঝি কোন কিছুর উপর নির্ভর করা। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ক্ষেত্রে একটা অবজেক্ট অন্য আর একটা অবজেক্টের উপর নির্ভর করে। ধরি, সাইকেল একটা ক্লাস অবজেক্ট এর ভেতরে চাকা ক্লাস অবজেক্ট কল করা আছে। তাহলে আমরা দেখতে পাচ্ছি সাইকেল অবজেক্টটি চাকা অবজেক্টের উপর নির্ভরশীল। এইটাই হল ডিপেন্ডেন্সি অর্থাৎ একটা অবজেক্টের অন্য অবজেক্টের উপর নির্ভরশীলতা।
class Wheel{
makeWheel(){
.......
}
}
class Cycle{
Wheel wheel = new Wheel();
wheel.makeWheel();
}
উপরের কোড থেকে আমরা বুঝতে পারি Cycle ক্লাস Wheel ক্লাসের উপর নির্ভরশীল। Cycle ক্লাস makeWheel() মেথড রান করাতে গেলে Wheel ক্লাসের অবজেক্ট তৈরি করতে হবে।
কেন প্রয়োজন ডিপেন্ডেন্সি ইনজেকশন
উপরের উদাহরন অনুযায়ী আমরা দেখেছি সাইকেল ক্লাস চাকা অবজেক্ট তৈরি করে। এখন আমাদের যদি এমনটি দরকার হয় যে Cycle ক্লাসে A কোম্পানির চাকা অবজেক্ট আছে। এখন আমরা সেটাকে পরিবর্তন করে B কোম্পানির চাকা অবজেক্ট দিতে চায়। তাহলে আমাদের কি করতে হবে? আমাদের কে আবার নতুন করে Cycle ক্লাস বানাতে হবে B কোম্পানির চাকা অবজেক্ট দিয়ে। কিন্তু যদি এখানে ডিপেন্ডেন্সি ইনজেকশন ব্যবহার করা হয় তাহলে আমরা চাকা অবজেক্টকে রান টাইমে পরিবর্তন করতে পারবো অর্থাৎ বাইরে থেকে অবজেক্ট ইনজেক্ট করতে পারবো। যার জন্যে Cycle ক্লাস স্বাধীন থাকবে কোন অবজেক্টের উপর নির্ভর করতে হবে না।
ডিপেন্ডেন্সি ইনজেকশনের ধরন
ডিপেন্ডেন্সি ইনজেকশন ৩ ধরনের। নিচে বর্ণনা করা হলঃ
১. সেটার ইনজেকশন (setter injection)
যখন ডিপেন্ডেন্সি কোন সেটার মেথড দিয়ে পুশ করা হয় তখন সেটা হয় সেটার ইনজেকশন।
২. কন্সট্রাক্টর ইনজেকশন (constructor injection)
যখন ডিপেন্ডেন্সি কোন কন্সট্রাক্টর দিয়ে পুশ করা হয় তখন সেটা হয় কন্সট্রাক্টর ইনজেকশন।
৩. ইন্টারফেস ইনজেকশন
এই ডিপেন্ডেন্সি একটা ইনজেক্টর মেথড দেয় যেটা ডিপেন্ডেন্সি ইনজেক্ট করে ক্লায়েন্টকে সাহায্য করে। তখন ক্লায়েন্টকে ইন্টারফেস ইমপ্লিমেন্ট করতে হয় যার ভেতরে একটা সেটার মেথড থাকে ডিপেন্ডেন্সি পুশ করারা জন্য।
ডিপেন্ডেন্সি ইনজেকশনের কাজ মূলত ৩ টিঃ
১. অবজেক্ট তৈরি করা
২. কোন ক্লাসের অবজেক্টটি দরকার জানতে হবে
৩. এবং অবজেক্টটি উক্ত ক্লাসে সরবারাহ করতে হবে
যদি অবজেক্টে কোন কিছু পরিবর্তন হয় তাহলে ডিপেন্ডেন্সি ইনজেকশন সেটা ক্লাসকে সরবারাহ করবে। এই ক্ষেত্রে ক্লাসের কোডের কোন পরিবর্তন হবে না।
ডিপেন্ডেন্সি ইনজেকশন ব্যবহারের সুবিধা
১. ইউনিট টেস্টিং এ সুবিধা হয়।
২. অ্যাপ্লিকেশন সহজেই বড়ভাবে কোড লেখা যায়।
৩. কোডকে লুজ কাপলিং করে।
ডিপেন্ডেন্সি ইনজেকশন ব্যবহারের অসুবিধা
১. এটা শেখা একটু জটিল।
২. কম্পাইল টাইম এরর রান টাইমে আসলে দেখা যায়।