我有一个班级:
class BasePage
{
protected abstract Company ReferencedCompany
{
get;
}
}
一个继承自它的asp.net页面。但是我不希望/需要在继承类中实现此属性。我真的不想把它留空。是否有一种设计模式可以用来避免明显违反Interface Segregation Principle(ISP)?
此外,我无法重新考虑整个代码库,所以我正在寻找可以抛出的东西。适配器模式也许?
答案 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模式,它会干净地分离视图模型和演示者。