আমি একজন সহকর্মীর সাথে আলোচনা করছিলাম, এবং আমরা সাবক্লাসিংয়ের উদ্দেশ্য সম্পর্কে বিরোধী স্বীকৃতি পেয়েছি। আমার স্বজ্ঞাততাটি হ'ল যদি সাবক্লাসের প্রাথমিক ফাংশনটি তার পিতামাতার সম্ভাব্য মানগুলির সীমিত পরিসীমা প্রকাশ করে তবে সম্ভবত এটি একটি সাবক্লাস হওয়া উচিত নয়। তিনি বিপরীত স্বজ্ঞাততার পক্ষে যুক্তি দেখিয়েছিলেন: যে সাবক্লাসিং কোনও বস্তুর বেশি "নির্দিষ্ট" হওয়ার প্রতিনিধিত্ব করে এবং তাই একটি সাবক্লাস সম্পর্কটি আরও উপযুক্ত relationship
আমার স্বজ্ঞাতাকে আরও দৃ concrete়তার সাথে বলতে গেলে, আমি মনে করি যে আমার কাছে যদি এমন একটি সাবক্লাস থাকে যা পিতামাত্ত শ্রেণীর প্রসারিত করে তবে সাবক্লাসকে ওভাররাইড করা একমাত্র কোডটি কনস্ট্রাক্টর (হ্যাঁ, আমি জানি কনস্ট্রাক্টররা সাধারণত "ওভাররাইড" করেন না, আমার সাথে সহ্য করেন) তবে আসলে যা দরকার ছিল তা হেল্পার পদ্ধতি ছিল।
উদাহরণস্বরূপ, এটিকে কিছুটা বাস্তব জীবনের শ্রেণী বিবেচনা করুন:
public class DataHelperBuilder
{
public string DatabaseEngine { get; set; }
public string ConnectionString { get; set; }
public DataHelperBuilder(string databaseEngine, string connectionString)
{
DatabaseEngine = databaseEngine;
ConnectionString = connectionString;
}
// Other optional "DataHelper" configuration settings omitted
public DataHelper CreateDataHelper()
{
Type dataHelperType = DatabaseEngineTypeHelper.GetType(DatabaseEngine);
DataHelper dh = (DataHelper)Activator.CreateInstance(dataHelperType);
dh.SetConnectionString(ConnectionString);
// Omitted some code that applies decorators to the returned object
// based on omitted configuration settings
return dh;
}
}
তাঁর দাবি এটি এই যে একটি সাবক্লাস রাখা সম্পূর্ণরূপে উপযুক্ত হবে:
public class SystemDataHelperBuilder
{
public SystemDataHelperBuilder()
: base(Configuration.GetSystemDatabaseEngine(),
Configuration.GetSystemConnectionString())
{
}
}
সুতরাং, প্রশ্ন:
- এমন লোকদের মধ্যে যারা নকশার ধরণ সম্পর্কে কথা বলেন, এর মধ্যে কোনটি স্বজ্ঞাত সঠিক? বিরোধী-নিদর্শন উপরে বর্ণিত হিসাবে সাবক্লাসিং করা?
- যদি এটি একটি অ্যান্টি-প্যাটার্ন হয় তবে এর নাম কী?
যদি এটি সহজে গুগলযোগ্য উত্তর হয়ে থাকে তবে আমি ক্ষমাপ্রার্থী; গুগলে আমার অনুসন্ধানগুলি বেশিরভাগই দূরবীন নির্মাণকারী বিরোধী-প্যাটার্ন সম্পর্কিত তথ্য ফিরিয়ে দেয় এবং আমি যা খুঁজছিলাম তা আসলে তা নয়।