বলুন আমাদের 1001 ক্লায়েন্ট রয়েছে যা তাদের ইনজেকশনগুলি গ্রহণের পরিবর্তে সরাসরি তাদের নির্ভরতা তৈরি করে। 1001 রিফ্যাকচারিং আমাদের বস অনুসারে কোনও বিকল্প নয়। আমরা কেবল তাদের উত্স অ্যাক্সেসের অনুমতি পাচ্ছি না, কেবল ক্লাস ফাইলগুলি।
আমাদের যা করা উচিত তা হ'ল এই "1001 ক্লায়েন্ট" সিস্টেমটি "আধুনিকীকরণ" করুন। আমরা আমাদের পছন্দ মতো রিফ্যাক্টরটি পারি। নির্ভরতাগুলি সেই ব্যবস্থার অংশ। এবং সেই নির্ভরতাগুলির মধ্যে কিছুগুলির একটি নতুন বাস্তবায়ন করার জন্য আমাদের পরিবর্তন করার কথা।
আমরা যা করতে চাই তা হ'ল ক্লায়েন্টের এই ভিড় সন্তুষ্ট করতে নির্ভরতার বিভিন্ন বাস্তবায়ন কনফিগার করার ক্ষমতা। দুঃখের বিষয়, ক্লায়েন্টরা কনস্ট্রাক্টর বা সেটটার দিয়ে ইঞ্জেকশন গ্রহণ না করায় ডিআই কোনও বিকল্প বলে মনে হচ্ছে না।
বিকল্পগুলি:
1) ক্লায়েন্টরা যে পরিষেবাটি ব্যবহার করে তা কার্যকর করে যাতে এটি ক্লায়েন্টদের এখন যা প্রয়োজন। ব্যাং আমরা সম্পন্ন করেছি। নমনীয় নয়। জটিল নয়।
২) বাস্তবায়নটিকে রিফ্যাক্টর করে যাতে এটি তার কাজটিকে অন্য কারও নির্ভরতার সাথে প্রতিনিধিত্ব করে যা এটি একটি কারখানার মাধ্যমে অর্জন করে। কারখানার পুনর্নির্মাণের মাধ্যমে তারা সবাই যে প্রয়োগটি ব্যবহার করে তা আমরা এখন নিয়ন্ত্রণ করতে পারি।
3) বাস্তবায়নটিকে রিফ্যাক্টর করে যাতে এটি কাজটির কাজটিকে আরও একটি নির্ভরতার জন্য প্রতিনিধিত্ব করে যা এটি কোনও সার্ভিস লোকেটারের মাধ্যমে অর্জন করে। এখন আমরা সার্ভিস লোকেটারটি কনফিগার করে কোন প্রয়োগটি ব্যবহার করে তা নিয়ন্ত্রণ করতে পারি যা hashmap
সামান্য ingালাই চলছে এমন জিনিসগুলির সাথে কেবল স্ট্রিংগুলির একটি হতে পারে ।
4) এমন কিছু যা আমি এখনও ভাবিনি।
উদ্দেশ্য:
পুরানো দুর্বল নকশাকৃত ক্লায়েন্ট কোডটি অর্থহীন জটিলতা না জুড়ে ভবিষ্যতে টেনে আনার কারণে যে নকশার ক্ষতি হচ্ছে তা হ্রাস করুন।
ক্লায়েন্টদের তাদের নির্ভরতাগুলির বাস্তবায়ন জানতে বা নিয়ন্ত্রণ করা উচিত নয় তবে তারা সেগুলি তৈরির সাথে জোর দেয় new
। আমরা তাদের নিয়ন্ত্রণ করতে পারি না new
তবে তারা যে শ্রেণী তৈরি করছে তা আমরা নিয়ন্ত্রণ করি।
আমার প্রশ্ন:
আমি কী বিবেচনা করতে ব্যর্থ হয়েছে?
আপনার কি বাস্তবায়নের জন্য বিভিন্ন বাস্তবায়নের মধ্যে কনফিগার করার সম্ভাবনা দরকার? কোন উদ্দেশ্যে?
দ্রুততা। অজানা অনেক। পরিচালন পরিবর্তনের সম্ভাবনা চায়। কেবলমাত্র বাইরের বিশ্বের উপর নির্ভরতা হারাবেন। পরীক্ষাও হচ্ছে।
আপনার কি বিভিন্ন সময় প্রয়োগের মধ্যে স্যুইচ করার জন্য রান টাইম মেকানিক্স বা কেবল একটি সংকলন টাইম মেকানিকসের প্রয়োজন? কেন?
সংকলন টাইম মেকানিক্স সম্ভবত যথেষ্ট যথেষ্ট। টেস্টিং বাদে।
বাস্তবায়নের মধ্যে আপনার কোন গ্রানুলারিটি পরিবর্তন করতে হবে? একেবারে? প্রতি মডিউল (প্রতিটি ক্লাসের একটি গ্রুপ সহ)? প্রতি ক্লাস?
1001 এর মধ্যে কেবল একটিই যেকোন সময় সিস্টেমের মাধ্যমে চালিত হয়। সমস্ত ক্লায়েন্ট একবারে যা ব্যবহার করে তা পরিবর্তন করা সম্ভবত ভাল। নির্ভরতাগুলির ব্যক্তিগত নিয়ন্ত্রণ সম্ভবত যদিও গুরুত্বপূর্ণ।
কার সুইচ নিয়ন্ত্রণ করতে হবে? কেবল আপনার / আপনার বিকাশকারী দল? প্রশাসক? প্রতিটি ক্লায়েন্ট তার নিজের? বা ক্লায়েন্টের কোডের জন্য রক্ষণাবেক্ষণ ডেভেলপাররা? তাহলে যান্ত্রিকগুলি কতটা সহজ / শক্তিশালী / বোকা হতে হবে?
দেব পরীক্ষার জন্য। বাহ্যিক হার্ডওয়্যার নির্ভরতা হিসাবে প্রশাসক পরিবর্তন। এটি পরীক্ষা এবং কনফিগার করা সহজ হওয়া দরকার।
আমাদের লক্ষ্যটি দেখানো হয় যে সিস্টেমটি দ্রুত এবং আধুনিকীকরণ করা যায়।
বাস্তবায়নের সুইচের বাস্তব ব্যবহারের ক্ষেত্রে?
একটি, হার্ডওয়্যার সমাধান প্রস্তুত না হওয়া পর্যন্ত কিছু ডেটা সফ্টওয়্যার দ্বারা সরবরাহ করা হবে।