ধরুন আমার মডেলটিতে (ইএফ ব্যবহার করে) আমার বিভিন্ন সত্ত্বা রয়েছে, ব্যবহারকারী, পণ্য, চালান এবং অর্ডার বলুন।
আমি এমন একটি ব্যবহারকারীর নিয়ন্ত্রণ লিখছি যা আমার প্রয়োগে সত্তাগুলি অবজেক্টের সংক্ষিপ্তাগুলি মুদ্রণ করতে পারে যেখানে সত্তাগুলি পূর্বনির্ধারিত সংস্থার অন্তর্ভুক্ত, এই ক্ষেত্রে আমি বলছি যে ব্যবহারকারীর এবং পণ্যের সংক্ষিপ্তসারগুলি সংক্ষিপ্ত করা যেতে পারে।
সংক্ষিপ্তসারগুলির মধ্যে কেবল একটি আইডি এবং বিবরণ থাকবে, তাই আমি এটির জন্য একটি সাধারণ ইন্টারফেস তৈরি করি:
public interface ISummarizableEntity {
public string ID { get; }
public string Description { get; }
}
তারপরে প্রশ্নে থাকা সত্তাগুলির জন্য, আমি একটি আংশিক শ্রেণি তৈরি করি যা এই ইন্টারফেসটি প্রয়োগ করে:
public partial class User : ISummarizableEntity
{
public string ID
{
get{ return UserID.ToString(); }
}
public string Description
{
get{ return String.Format("{0} {1} is from {2} and is {3} years old", FirstName, LastName, Country, Age); }
}
}
public partial class Product: ISummarizableEntity
{
public string ID
{
get{ return ProductID.ToString(); }
}
public string Description
{
get{ return String.Format("{0} weighs {1}{2} and belongs in the {3} department", ProductName, WeightValue, WeightUnit, Department); }
}
}
এইভাবে আমার ব্যবহারকারীর নিয়ন্ত্রণ / আংশিক দৃষ্টিভঙ্গি কেবল ইসমম্মারাইজেবল এন্টিটির যে কোনও সংকলনে আবদ্ধ হতে পারে এবং উত্সটিতে মোটেই আগ্রহী হওয়ার প্রয়োজন নেই। আমাকে বলা হয়েছে যে ইন্টারফেসগুলি ডেটাটাইপ হিসাবে ব্যবহার করা উচিত নয় তবে আমি এর চেয়ে বেশি তথ্য পাইনি। আমি যতদূর দেখতে পাচ্ছি, যদিও ইন্টারফেসগুলি সাধারণত আচরণের বর্ণনা দেয়, কেবল বৈশিষ্ট্য ব্যবহার করা নিজের মধ্যে একটি অ্যান্টি-প্যাটার্ন নয় কারণ বৈশিষ্ট্যগুলি যে কোনওভাবেই গ্রাহকরা / সেটটারদের জন্য কেবল সিনট্যাকটিক চিনি।
আমি সত্তা থেকে এটির জন্য একটি কংক্রিট ডেটাটাইপ এবং মানচিত্র তৈরি করতে পারি তবে আমি সুবিধাটি দেখতে পাচ্ছি না। আমি সত্ত্বা অবজেক্টগুলিকে একটি বিমূর্ত শ্রেণীর উত্তরাধিকারী করে তারপরে বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে পারি তবে তারপরে আমি সত্ত্বাগুলি আর কোনও কাজে লাগাতে পারি না কারণ আমাদের একাধিক উত্তরাধিকার থাকতে পারে না। আমি চাইলে যেকোনও বিষয়কে অসম্পূর্ণযোগ্যতা হিসাবে গ্রহণ করার জন্যও আমি উন্মুক্ত (স্পষ্টত আমি ইন্টারফেসটির নতুন নাম দেব)
আমার মনে যে সমাধানটি আমি ব্যবহার করছি তা হ'ল রক্ষণাবেক্ষণযোগ্য, এক্সটেনসিবল, টেস্টেবল এবং মোটামুটি শক্ত। আপনি কি এখানে অ্যান্টি-প্যাটার্নটি দেখতে পাচ্ছেন?
EntitySummary
সঙ্গে,User
এবংProduct
প্রতিটি মত একটি পদ্ধতি হচ্ছেpublic EntitySummary GetSummary()
?