我可以使用什么(设计模式可能?)来避免这种ISP违规?有一个Asp.net基页

时间:2011-10-24 16:17:11

标签: c# asp.net design-patterns

我有一个班级:

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

一个继承自它的asp.net页面。但是我不希望/需要在继承类中实现此属性。我真的不想把它留空。是否有一种设计模式可以用来避免明显违反Interface Segregation Principle(ISP)?

此外,我无法重新考虑整个代码库,所以我正在寻找可以抛出的东西。适配器模式也许?

1 个答案:

答案 0 :(得分:4)

你应该有更多类型。如果某个页面没有ReferencedCompany,则该页面不是一个BasePage。请参阅以下示例:

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模式,它会干净地分离视图模型和演示者。