Что я могу использовать (может быть, шаблон дизайна?), Чтобы избежать нарушения ISP?с базовой страницей Asp.net - PullRequest
1 голос
/ 24 октября 2011

У меня есть класс:

class BasePage
{
   protected abstract Company ReferencedCompany
   {
      get;
   }
}

и страница asp.net, которая наследуется от него.Однако я не хочу / нужно реализовать это свойство в наследующем классе.И я действительно не хочу оставлять это пустым.Есть ли шаблон проектирования, который я могу использовать, чтобы избежать этого явного нарушения Принципа разделения интерфейса (ISP)?

Также я не могу перефакторировать всю базу кода, поэтому я искал что-тоЯ мог бы помешать.Возможно, шаблон адаптера?

1 Ответ

4 голосов
/ 24 октября 2011

У вас должно быть больше типов. Если какая-то страница не имеет 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 и рассмотрите возможность использования шаблона MVP, он четко разделяет модель представления и презентатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...