ইনভার্স অফ কন্ট্রোল - স্প্রিং

ইনভার্সন অফ কন্ট্রোল(IoC) বলতে কি বুঝি?


ইনভার্স অফ কন্ট্রোল বুঝার আগে নরমাল কন্ট্রোল বুঝেতে হবে। নরমাল কন্ট্রোল হচ্ছে, যখন আপনি কিছু একটা করতে চান, সেই কাজ করতে গিয়ে দেখলেন আরো কিছু অতিরিক্ত কাজ করা লাগবে। তখন আপনি নিজে অতিরিক্ত কাজও করেন। ধরুন, ছুটির দিনে একা একা বাসায় বসে আছেন, খিদে পেয়েছে, সেক্ষত্রে খাবার রান্না করে খাওয়াই হলো নরমাল ফ্লো। এখানে খাওয়া আপনার কাজ আর রান্না করা অরিতিক্ত কাজ।



ইনভার্স অফ কন্ট্রোল হচ্ছে, আপনার আম্মা কোথাও যাওয়ার আগে বলে দিয়ে গেছে, খিদে লাগলে ফ্রিজে খাবার আছে, খেয়ে নিও। মা জানে আপনার ক্ষুদা লাগবে, তাই আপনার মা আগেই খারাব তৈরী করে ফ্রিজে রেখেছেন। এখানে আপনাকে কাজ খাওয়া, ব্যাস ফ্রিজ খুলে খেয়ে নিলেন।



এখন আসুন উপরের উদাহরণকে সফটওয়্যার ইঞ্জিনিয়ারিং এর অন্যতম প্রিন্সিপাল ইনভার্স অফ কন্ট্রোল এর সাথে মিলিয়ে নেই।

  • উদাহরণে আপনি হচ্ছেন একটা অবজেক্ট, আপনার কাজ খাওয়া
  • খাবার হচ্ছে আপনার চাহিদা বা ডিপেন্ডেন্সি, যা রান্না করে তৈরি করতে হয়
  • আপনার আম্মা হচ্ছে IoC কন্টেইনার, চাওয়ার আগেই যিনি চাহিদার জোগান দেন ।


তারমানে IoC হচ্ছে একটা অবজেক্ট তৈরী করার সময়, তার ভবিষ্যতে কাজে লাগবে এমন আরো অবজেক্ট তার ভিতরে দিয়ে দেয়া। অবজেক্ট কোন কাজের জন্য নিজে অন্য অবজেক্ট তৈরী করবে না। IoC কন্টেইনার সব ডিপেন্ডেন্সি সরবরাহ করবে।


তাহলে ডিপেন্ডেন্সি ইনজেকশন(DI) কি ?

IoC অনেক ভাবেই ইমপ্লিমেন্ট করা যায়, ডিপেন্ডেন্সি ইনজেকশন(DI) হচ্ছে তাদের মধ্যে একটা উপায়।এছাড়া ওইভেন্ট, ডেলিগেট ও সার্ভিস লোকেটরের মাধ্যমেও একই কাজ ভিন্ন উপায়ে করা যায়।


IoC বা DI এর সুবিধা কি?

  • অবজেক্ট হিসাবে যাদের দরকার হবে, আপনি তাদের ব্যবহার করবেন, তারা কোথা থেকে আসবে, কিভাবে তৈরি হচ্ছে বা হবে সেই ঝামেলা আপনার নেয়া লাগবে না।
  • লুজ কাপলিং, যেহেতু অবজেক্ট আপনি নিউ করে কোন অবজেক্ট তৈরী করেননি, আপনি তৈরী করা অবস্থায় পেয়েছেন।
  • টেস্ট করতে সুবিধা, টেস্ট করার সময় আপনি আসল অবজেক্টের বদলে মক অবজেক্ট ইনজেক্ট করে দিতে পারেন।



স্প্রিং ফ্রেমওয়ার্ক ডিপেন্ডেন্সি ইনকেজশনের জন্য বিখ্যাত। এছাড়াও Google Guice এবং আরো কিছু ফ্রেমওয়ার্ক আছে।


-- ধন্যবাদ