নির্ভরতা ইনজেকশন (ডিআই) একটি সুপরিচিত এবং কেতাদুরস্ত প্যাটার্ন। ইঞ্জিনিয়ারদের বেশিরভাগই এর সুবিধাগুলি জানেন:
- ইউনিট পরীক্ষায় পৃথক করা সম্ভব / সহজ
- স্পষ্টভাবে কোনও শ্রেণীর নির্ভরতা সংজ্ঞায়িত করা
- ভাল ডিজাইনের সুবিধার্থে (উদাহরণস্বরূপ একক দায়িত্বের নীতি (এসআরপি))
- সুইচিং বাস্তবায়নগুলি দ্রুত সক্ষম করা ( উদাহরণস্বরূপ
DbLogger
পরিবর্তেConsoleLogger
)
আমি গণনা করি যে শিল্পের সর্বত্র sensকমত্য রয়েছে যে ডিআই একটি ভাল, কার্যকর প্যাটার্ন। এই মুহুর্তে খুব বেশি সমালোচনা নেই। সম্প্রদায়ে যে অসুবিধাগুলি উল্লেখ করা হয়েছে তা সাধারণত অপ্রতুল। তাদের মধ্যে কিছু:
- ক্লাস সংখ্যা বৃদ্ধি
- অপ্রয়োজনীয় ইন্টারফেস তৈরি
বর্তমানে আমরা আমার সহকর্মীর সাথে আর্কিটেকচার ডিজাইন নিয়ে আলোচনা করি। তিনি বেশ রক্ষণশীল, কিন্তু মুক্ত মনের মানুষ। তিনি এমন বিষয়গুলিতে প্রশ্ন করতে পছন্দ করেন, যা আমি ভাল বলে বিবেচনা করি, কারণ আইটি-র অনেক লোক কেবল নতুন প্রবণতাটি অনুলিপি করে, সুবিধার পুনরাবৃত্তি করে এবং সাধারণভাবে খুব বেশি ভাবেন না - খুব গভীর বিশ্লেষণ করবেন না।
আমি জিজ্ঞাসা করতে চাই জিনিসগুলি হ'ল:
- যখন আমাদের কেবল একটি বাস্তবায়ন হয় তখন আমাদের কি নির্ভরতা ইনজেকশন ব্যবহার করা উচিত?
- আমাদের কি ভাষা / কাঠামোর বিষয়গুলি বাদ দিয়ে নতুন অবজেক্ট তৈরি নিষিদ্ধ করা উচিত?
- একটি একক বাস্তবায়ন খারাপ ধারণা ইনজেকশন করা হয় (আসুন আমরা বলি যে আমাদের কেবল একটি বাস্তবায়ন রয়েছে তাই আমরা "খালি" ইন্টারফেস তৈরি করতে চাই না) যদি আমরা কোনও নির্দিষ্ট শ্রেণির ইউনিট পরীক্ষার পরিকল্পনা না করি?
UserService
সেই শ্রেণি থাকে তবে কেবল যুক্তির ধারক। এটি একটি ডাটাবেস সংযোগ ইনজেকশন দেয় এবং পরীক্ষার মাধ্যমে লেনদেনের অভ্যন্তরে সঞ্চালিত হয় back অনেকে এই খারাপ অভ্যাসটিকে ডাকবেন তবে আমি দেখতে পেলাম যে এটি অত্যন্ত কার্যকরভাবে কাজ করে। কেবলমাত্র পরীক্ষার জন্য আপনার কোডটিকে জোরদার করার দরকার নেই এবং আপনি বাগের জন্য ইন্টিগ্রেশন পরীক্ষার পাওয়ার সন্ধান করতে পারেন।