আমার সফ্টওয়্যারটি কনফিগার করার জন্য কখন ডিআইসি / আইওসি রেজিস্ট্রি ব্যবহার করতে হবে এবং কারখানাগুলি কখন ব্যবহার করতে হবে, সেই সাথে উভয় পদ্ধতির পিছনে যুক্তি যুক্ত করার চেষ্টা করার চেষ্টা করছি।
আমি স্ট্রাকচারম্যাপকে আমার ডিআই কনটেইনার (ডিআইসি) হিসাবে ব্যবহার করছি, যা নিবন্ধগুলি ব্যবহার করে কনফিগার করা সহজ। ডিআইসিতে কার্যত সমস্ত নিবন্ধিত বস্তুগুলি অর্থে স্থিতিশীল যে, রানটাইমের সময় আমার কোনও প্রয়োগ / উদাহরণ পরিবর্তন করার দরকার নেই, একবার ডিআইসি কনফিগার হয়ে গেলে এবং সেগুলি ডিআইসি-তে সিঙ্গলেট হিসাবে কনফিগার করা হয়। তবে, যেহেতু আমার সফ্টওয়্যার (এসডাব্লু) বিভিন্ন ডিভাইসে চালিত হবে সেই অনুযায়ী হার্ডওয়্যারটি কনফিগার করার জন্য আমার এসডাব্লু চালিত ডিভাইসের উপর নির্ভর করে একটি ডিভাইস-নির্দিষ্ট রেজিস্ট্রি নির্বাচন করা দরকার ।
যেহেতু আমার কিছু অবজেক্ট তৈরির ক্ষেত্রে কনফিগারেশন ফাইলগুলি পড়ার প্রয়োজন হয়, তাই আমি ডিগ্রিগুলিতে এই উদাহরণগুলি ফেরত দেওয়ার জন্য কারখানাগুলি ব্যবহার করছি, যাতে কনফিগারেশনটির পাঠ্যটি অবজেক্টের তৈরি থেকে আলাদা করা যায়। আমি সংশ্লিষ্ট প্লাগইন প্রকারের জন্য ডিআইসিতে কারখানার প্রাপ্তরা নিবন্ধভুক্ত করেছি।
এখন বলুন আমার কাছে IMotor
কংক্রিটের ধরণের একটি প্লাগইন টাইপ রয়েছে Motor1
এবং এটি Motor2
কারখানা দ্বারা পরিচালিত হওয়া উচিত। আমার ডিভাইসটি কীভাবে কনফিগার করতে হয় তার সিদ্ধান্ত নেওয়ার জন্য এখন দুটি উপায় রয়েছে:
- আমি যে ডিভাইসটির উপর এসডাব্লু চলছে তা সম্পর্কে তথ্যটি পাস করি
MotorFactory
এবং এটি সঠিক মোটরটি দেয়, হয়Motor1
বা হয়Motor2
। এই ক্ষেত্রে সিদ্ধান্ত নেওয়ার জন্য যুক্তি নেই ভিতরে কারখানার। - আমি ডিভাইসটি চলছে এবং দুই কারখানায় তৈরি অনুযায়ী DIC কনফিগার
Motor1Factory
এবংMotor2Factory
, যেখানে একটা সৃষ্টিMotor1
এবং অন্যান্যMotor2
।IMotor
এক্ষেত্রে আমার ডিভাইস-নির্দিষ্ট রেজিস্ট্রিগুলিতে পৃথক পৃথক রেজিস্ট্রি এন্ট্রি থাকবে যাMotor1Factory
বা হয় ব্যবহার করেMotor2Factory
।
এখন আমার প্রশ্ন: এই দুটি পদ্ধতির মধ্যে কোনটি পছন্দনীয় এবং কেন? আমার কাছে মনে হচ্ছে এটি প্রথম কেসটি সোজা সামনে এবং একগুণিত নয়, যেহেতু আমি যুক্তিটি ছড়িয়ে দিচ্ছি যা কোড-বেস জুড়ে কোন ধরণের ইনস্ট্যান্ট করতে হবে তা স্থির করে। যদিও দ্বিতীয় ক্ষেত্রে আমি কার্যকরভাবে আমার কোডে কারখানার সংখ্যা বাড়িয়ে দিচ্ছি, যেহেতু প্রতিটি কংক্রিটের জন্য (প্রায়) আমার একটি কারখানার প্রয়োজন হবে। এটি আমার কাছে আরও বিভ্রান্ত হয়ে ওঠে, যখন বিমূর্ত কারখানাগুলি মিশ্রণে যুক্ত হয়।
তাই আবার: আমি কখন একটি পদ্ধতি বা অন্যটি ব্যবহার করব? এবং আরও গুরুত্বপূর্ণ: কোন পথে যেতে হবে তা সিদ্ধান্ত নেওয়ার জন্য ভাল সূচকগুলি কী কী?