সুতরাং আমার একটি কারখানা আছে যা বিভিন্ন শ্রেণীর অবজেক্ট তৈরি করে। সম্ভাব্য ক্লাসগুলি সমস্ত বিমূর্ত পূর্বপুরুষ থেকে প্রাপ্ত। কারখানায় একটি কনফিগারেশন ফাইল রয়েছে (জেএসএন সিনট্যাক্স) এবং ব্যবহারকারীর কনফিগারেশনের উপর নির্ভর করে কোন শ্রেণিটি তৈরি করতে হবে তা স্থির করে।
এটি অর্জনের জন্য, কারখানাটি জেএসএন-পার্সিংয়ের জন্য boost :: संपत्ति_tree ব্যবহার করে। তিনি ptree দিয়ে হাঁটেন এবং সিদ্ধান্ত নেন কোন কোন কংক্রিট অবজেক্ট তৈরি করা উচিত।
তবে, পণ্য-বস্তুর অনেকগুলি ক্ষেত্র (বৈশিষ্ট্য) রয়েছে। কংক্রিট শ্রেণীর উপর নির্ভর করে, অবজেক্টটির প্রায় 5-10 টি বৈশিষ্ট্য রয়েছে, ভবিষ্যতে সম্ভবত আরও বেশি।
সুতরাং আমি নিশ্চিত না যে কীভাবে অবজেক্টগুলির কনস্ট্রাক্টর দেখতে হবে। আমি দুটি সমাধান সম্পর্কে চিন্তা করতে পারি:
1) পণ্যটির নির্মাতা প্রতিটি বৈশিষ্ট্যকে প্যারামিটার হিসাবে প্রত্যাশা করে, সুতরাং, কনস্ট্রাক্টরটি 10+ পরামিতি দিয়ে শেষ হবে। এটি কুৎসিত হবে এবং দীর্ঘ, অপঠনযোগ্য কোড লাইনে নিয়ে যাবে। তবে, সুবিধাটি হ'ল কারখানাটি JSON কে বিশ্লেষণ করতে পারে এবং সঠিক পরামিতিগুলির সাহায্যে নির্মাণকারীকে প্রার্থনা করতে পারে। পণ্য শ্রেণীর জানার দরকার নেই যে এটি JSON কনফিগারেশনের কারণে তৈরি হয়েছে। এটি জেএসএন বা কনফিগারেশন জড়িত আছে তা প্রয়োজন নেই।
2) পণ্যটির নির্মাতা কেবল একটি যুক্তি, সম্পত্তি_ট্রি অবজেক্টের প্রত্যাশা করেন। তারপরে এটি প্রয়োজনীয় তথ্য বিশ্লেষণ করতে পারে। কনফিগের তথ্য যদি হারিয়ে না যায় বা সীমা ছাড়িয়ে যায় তবে প্রতিটি পণ্য শ্রেণি সঠিকভাবে প্রতিক্রিয়া জানাতে পারে। কারখানাটি বিভিন্ন পণ্যগুলির দ্বারা কী যুক্তিগুলি প্রয়োজন তা জানার দরকার নেই। কারখানার ভুল কনফিগারেশনের ক্ষেত্রে কীভাবে প্রতিক্রিয়া জানানো উচিত তাও জানার দরকার নেই। এবং কনস্ট্রাক্টর ইন্টারফেস একীভূত এবং ছোট। তবে, একটি অসুবিধা হিসাবে, পণ্যটিকে জেএসএন থেকে প্রয়োজনীয় তথ্য বের করা দরকার, সুতরাং এটি কীভাবে এটি নির্মিত তা জানে।
আমি সমাধান পছন্দ 2)। তবে, আমি নিশ্চিত নই যে এটি ভাল কারখানার প্যাটার্ন কিনা। এটি কোনওভাবেই পণ্যটিকে জানাতে ভুল অনুভব করে যে এটি JSON কনফিগারেশন দিয়ে তৈরি করা হয়েছে। অন্যদিকে, নতুন পণ্যগুলি খুব সাধারণভাবে প্রবর্তন করা যেতে পারে।
সে সম্পর্কে কোন মতামত?