মজার বিষয়, এই প্রশ্নটি আমাকে কেবল একইভাবে কথোপকথনের স্মরণ করিয়ে দিয়েছিল যে আমি কাজ করছি এমন লাইব্রেরি লাইব্রেরি সম্পর্কে আমাদের একজন ইঞ্জিনিয়ারের সাথে।
কমান্ডগুলির পরিবর্তে, আমার কাছে অনুরোধের ক্লাস ছিল এবং তারপরে আমার কাছে অনুরোধহ্যান্ডলার ছিল lers ডিজাইনটি আপনি বর্ণনা করছেন এমনভাবে তৈরি হয়েছিল। আমার মনে হয় আপনার যে বিভ্রান্তি রয়েছে তা হ'ল আপনি ইংরেজি শব্দটি "কমান্ড" দেখেন এবং তাত্ক্ষণিকভাবে "ক্রিয়া, ক্রিয়া ... ইত্যাদি" ভাবেন think
তবে এই নকশায়, কমান্ডকে (বা অনুরোধ) একটি চিঠি হিসাবে মনে করুন। বা যারা জানেন না যে ডাক পরিষেবা কী, তাদের ই-মেইল চিন্তা করুন। এটি কেবল বিষয়বস্তু, কীভাবে সেই সামগ্রীর উপর আচরণ করা উচিত তা থেকে ডিক্লোলড।
কেন আপনি এই করবেন? সর্বাধিক সাধারণ ক্ষেত্রে কমান্ড প্যাটার্নের কোনও কারণ নেই এবং আপনি এই ক্লাসটি সরাসরি কাজ সম্পাদন করতে পারেন। যাইহোক, আপনার নকশার মতো ডিকোপলিং করা যদি আপনার ক্রিয়াকলাপ / আদেশ / অনুরোধটি কিছুটা দূরত্বে ভ্রমণ করে তবে তা বোধগম্য হয়। উদাহরণস্বরূপ, সকেট বা পাইপগুলি জুড়ে বা ডোমেন এবং অবকাঠামোর মধ্যে। অথবা আপনার আর্কিটেকচারে আপনার কমান্ডগুলি অবিচল থাকা প্রয়োজন (উদাহরণস্বরূপ কমান্ড হ্যান্ডলার একসাথে 1 কমান্ড করতে পারে, কিছু সিস্টেম ইভেন্টের কারণে 200 কমান্ড আসে এবং প্রথম 40 প্রক্রিয়াটি বন্ধ হয়ে যায়)। সেক্ষেত্রে, একটি সাধারণ বার্তা-কেবল ক্লাস থাকা কেবল মেসেজের অংশটি জেএসএন / এক্সএমএল / বাইনারি / যাই হোক না কেন সিরিয়ালাইজ করা খুব সহজ হয়ে যায় এবং যতক্ষণ না কমান্ড হ্যান্ডলার এটি প্রক্রিয়া করার জন্য প্রস্তুত না হয় ততক্ষণ এটিকে পাইপলাইনে নামিয়ে দেয়।
কমান্ডহ্যান্ডলারের কাছ থেকে কমান্ড ডিউপল করার আরেকটি সুবিধা হ'ল এখন আপনার কাছে সমান্তরাল উত্তরাধিকারের স্তরক্রমের বিকল্প রয়েছে। উদাহরণস্বরূপ, আপনার সমস্ত কমান্ডগুলি বেস কমান্ড শ্রেণি থেকে অনুভূত হতে পারে যা সিরিয়ালাইজেশন সমর্থন করে। এবং হতে পারে আপনার মধ্যে 20 টির মধ্যে 4 টি কমান্ড হ্যান্ডলার রয়েছে যার অনেকগুলি মিল রয়েছে, এখন আপনি এগুলি হ্যান্ডলারের বেস শ্রেণি থেকে পেতে পারেন। যদি আপনার কাছে একটি শ্রেণিতে ডেটা এবং কমান্ড হ্যান্ডলিং থাকে তবে এই ধরণের সম্পর্কটি দ্রুত নিয়ন্ত্রণের বাইরে চলে যায়।
ডাইউপলিংয়ের জন্য আরেকটি উদাহরণ হ'ল যদি আপনার কমান্ডের খুব কম ইনপুট প্রয়োজন হয় (উদাহরণস্বরূপ 2 পূর্ণসংখ্যা এবং একটি স্ট্রিং) তবে তার পরিচালনার যুক্তিটি যথেষ্ট জটিল যেখানে আপনি মধ্যবর্তী সদস্যের ভেরিয়েবলগুলিতে ডেটা সঞ্চয় করতে চান। যদি আপনি 50 টি কমান্ড সারি করেন তবে আপনি যে সমস্ত মধ্যবর্তী স্টোরেজটির জন্য মেমরি বরাদ্দ করতে চান না, তাই আপনি কমান্ডহ্যান্ডলার থেকে কমান্ড পৃথক করুন। এখন আপনি 50 টি হালকা ওজনের ডেটা স্ট্রাকচার সারি করুন এবং কমান্ড হ্যান্ডলারের দ্বারা কমান্ডগুলি প্রক্রিয়াকরণ করা হ'ল আরও জটিল ডেটা স্টোরেজ কেবল একবার (বা আপনার যদি এন হ্যান্ডলারগুলি থাকে তবে N বার) বরাদ্দ করা হয়।