#c# #asp.net #design-patterns
#c# #asp.net #шаблоны проектирования
Вопрос:
У меня есть класс:
class BasePage
{
protected abstract Company ReferencedCompany
{
get;
}
}
И asp.net страница, которая наследуется от него. Однако я не хочу / не должен реализовывать это свойство в наследующем классе. И я действительно не хочу оставлять ее пустой. Есть ли шаблон проектирования, который я могу использовать, чтобы избежать этого явного нарушения принципа разделения интерфейсов (ISP)?
Кроме того, я не могу изменить всю кодовую базу, поэтому я искал что-то, что я мог бы добавить. Возможно, шаблон адаптера?
Ответ №1:
У вас должно быть больше типов. Если на какой-то странице нет a ReferencedCompany
, то эта страница не является базовой страницей. Смотрите пример ниже:
class BasePage
{
//something common to ALL pages
}
class CompanyPage : BasePage
{
protected abstract Company ReferencedCompany
{
get;
}
}
class EmployeePage : BasePage
{
protected abstract IEnumerable<Employee> AllEmployees
{
get;
}
}
Если вы используете это с ASP.NET WebForms рассмотрите возможность использования шаблона MVP, он четко разделяет модель представления и презентер.