আমাকে দেখার জন্য কিছু জাভা কোড দেওয়া হয়েছে, যা একটি গাড়ী রেসের অনুকরণ করে, যার মধ্যে একটি বেসিক স্টেট মেশিনের প্রয়োগ অন্তর্ভুক্ত রয়েছে। এটি একটি ধ্রুপদী কম্পিউটার বিজ্ঞান রাষ্ট্রের মেশিন নয়, কেবল একটি বস্তু যার একাধিক রাজ্য থাকতে পারে এবং গণনার একটি সিরিজের ভিত্তিতে এর রাজ্যগুলির মধ্যে পরিবর্তন করতে পারে।
কেবল সমস্যাটি বর্ণনা করার জন্য, আমি একটি নেস্টেড এনাম ক্লাস সহ একটি গাড়ি ক্লাস পেয়েছি যা কারের অবস্থার জন্য কিছু ধ্রুবককে সংজ্ঞায়িত করে (যেমন অফ, আইডিএল, ড্রাইভ, রিভার্স, ইত্যাদি)। এই একই গাড়ী শ্রেণীর মধ্যে আমার কাছে একটি আপডেট ফাংশন রয়েছে, যা মূলত একটি বৃহত সুইচ বিবৃতি নিয়ে গঠিত যা গাড়িগুলির বর্তমান অবস্থায় স্যুইচ করে, কিছু গণনা করে এবং তারপরে গাড়ির স্থিতি পরিবর্তন করে।
আমি যতদূর দেখতে পাচ্ছি, গাড়ি রাজ্যটি কেবল তার নিজস্ব শ্রেণির মধ্যেই ব্যবহৃত হয়।
আমার প্রশ্ন, উপরে বর্ণিত প্রকৃতির কোনও রাজ্য মেশিন বাস্তবায়নের জন্য এটিই কি সেরা উপায়? এটি সবচেয়ে সুস্পষ্ট সমাধানের মতো শোনাচ্ছে তবে অতীতে আমি সর্বদা শুনেছি "সুইচ স্টেটমেন্টগুলি খারাপ"।
আমি এখানে যে প্রধান সমস্যাটি দেখতে পাচ্ছি তা হ'ল স্যুইচ বিবৃতিটি সম্ভবত খুব বড় হয়ে উঠতে পারে কারণ আমরা আরও রাজ্য যুক্ত করি (যদি মনে করা হয়) এবং কোডটি অযৌক্তিক এবং বজায় রাখা শক্ত হয়ে উঠতে পারে।
এই সমস্যার আরও ভাল সমাধান কী হতে পারে?
object.state = object.function(object.state);