"কম্পোজিশন হায়ারার্কি" কোনও জিনিস না হলে ক্ষমা প্রার্থনা করছি, তবে আমি প্রশ্নটিতে এর অর্থ কী তা ব্যাখ্যা করব।
এমন কোনও ওও প্রোগ্রামার নেই যিনি "উত্তরাধিকারের স্তরক্রম সমতল রাখুন" বা "উত্তরাধিকারের চেয়ে বেশি রচনাটিকে পছন্দ করুন" ইত্যাদির বিভিন্নতা জুড়ে আসেনি। তবে, গভীর সংমিশ্রনের স্তরক্রমগুলিও সমস্যাযুক্ত বলে মনে হচ্ছে।
ধরা যাক আমাদের পরীক্ষার ফলাফল বিশদ বিবরণী সংগ্রহের প্রয়োজন:
class Model {
// ... interface
Array<Result> m_results;
}
প্রতিটি ফলাফলের নির্দিষ্ট বৈশিষ্ট্য রয়েছে। এর মধ্যে রয়েছে পরীক্ষার সময়, পাশাপাশি পরীক্ষার প্রতিটি স্তর থেকে কিছু মেটা-ডেটা:
enum Stage {
Pre = 1,
Post
};
class Result {
// ... interface
Epoch m_epoch;
Map<Stage, ExperimentModules> m_modules;
}
ঠিকাছে দারুন. এখন, প্রতিটি পরীক্ষামূলক মডিউলটিতে পরীক্ষার ফলাফল বর্ণনা করার পাশাপাশি একটি পরীক্ষামূলক নমুনা সেটের উল্লেখগুলির একটি স্ট্রিং রয়েছে:
class ExperimentalModules {
// ... interface
String m_reportText;
Array<Sample> m_entities;
}
এবং তারপরে প্রতিটি নমুনায় রয়েছে ... ভাল, আপনি ছবিটি পাবেন।
সমস্যাটি হ'ল আমি যদি আমার অ্যাপ্লিকেশন ডোমেন থেকে জিনিসগুলি মডেলিং করি তবে এটি খুব প্রাকৃতিক ফিট বলে মনে হয়, তবে দিনের শেষে, এ Result
কেবল ডেটা বোকা ধারক! এটির জন্য একটি বৃহত শ্রেণি তৈরি করা সার্থক বলে মনে হচ্ছে না।
ধরে নিই যে উপরে দেখানো ডেটা স্ট্রাকচার এবং ক্লাসগুলি সঠিকভাবে অ্যাপ্লিকেশন ডোমেনের মধ্যে সম্পর্কের মডেল করে, গভীর রচনার শ্রেণিবিন্যাসের অবলম্বন না করে এমন "ফলাফল" মডেল করার আরও ভাল উপায় কি? এমন কোনও বাহ্যিক প্রসঙ্গ আছে যা আপনাকে নির্ধারণ করতে সহায়তা করবে যে এই জাতীয় নকশা ভাল কিনা?