আমার প্রচুর "অ্যান্টি-প্যাটার্ন" সিঙ্গেলন সহ একটি বিশাল কোডবেস আছে, স্থির পদ্ধতি সহ ইউটিলিটি ক্লাস এবং new
কীওয়ার্ড ব্যবহার করে নিজস্ব নির্ভরতা তৈরি করার ক্লাসগুলি । এটি একটি কোড পরীক্ষা করা খুব কঠিন করে তোলে।
আমি ধীরে ধীরে কোডকে নির্ভরতা ইনজেকশন ধারকটিতে স্থানান্তর করতে চাই (আমার ক্ষেত্রে এটি Guice
, কারণ এটি একটি GWT
প্রকল্প)। নির্ভরতা ইনজেকশন সম্পর্কে আমার বোঝার থেকে, এটি কিছুই বা কিছুই নয়। হয় সমস্ত ক্লাস স্প্রিং / গুইস দ্বারা পরিচালিত হয় বা কোনওটিই নয়। কোডবেস বড় হওয়ায় আমি রাতের বেলা কোডটি রূপান্তর করতে পারি না। তাই ধীরে ধীরে এটি করার জন্য আমার একটি উপায় দরকার।
সমস্যাটি হ'ল যখন আমি এমন ক্লাস দিয়ে শুরু করি যেখানে অন্যান্য ক্লাসে ইঞ্জেকশন লাগানো দরকার তখন আমি @Inject
সেই ক্লাসগুলিতে একটি সাধারণ ব্যবহার করতে পারি না , কারণ সেই ক্লাসগুলি এখনও ধারক দ্বারা পরিচালিত হয় না। সুতরাং এটি "শীর্ষ" শ্রেণি পর্যন্ত একটি দীর্ঘ চেইন তৈরি করে যা কোথাও ইঞ্জেকশন করা হয় না।
আমি দেখি একমাত্র উপায় হ'ল Injector
আপাতত একক সিলেটের মাধ্যমে বিশ্বব্যাপী একটি / অ্যাপ্লিকেশন প্রসঙ্গ তৈরি করা, যাতে অন্যান্য শ্রেণিগুলি এ থেকে একটি পরিচালিত মটরশুটি পেতে পারে। তবে এটি composition root
অ্যাপ্লিকেশনটিতে প্রকাশ না করার গুরুত্বপূর্ণ ধারণার বিরোধিতা করে।
আর একটি পদ্ধতি নীচের অংশে থাকবে: "উচ্চ-স্তরের" ক্লাস শুরু করা, তাদেরকে নির্ভরতা ইনজেকশন ধারক হিসাবে অন্তর্ভুক্ত করুন এবং আস্তে আস্তে "ছোট" শ্রেণিতে চলে যান। তবে তারপরে আমাকে দীর্ঘ সময় অপেক্ষা করতে হবে, যেহেতু আমি এখনও সেই ছোট ক্লাসগুলি পরীক্ষা করতে পারি যা এখনও গ্লোবাল / স্ট্যাটিক্সের উপর নির্ভর করে।
এই ধীরে ধীরে মাইগ্রেশন অর্জনের উপায় কী হবে?
পিএস প্রশ্নটি নির্ভরতা ইনজেকশনের দিকে ধীরে ধীরে যোগাযোগ করা শিরোনামে একই, তবে এটি আমার প্রশ্নের উত্তর দেয় না।