目前我正在为我的一个项目实施LoadableComponent设计模式。
早些时候我正在使用' BasePage'其中的每一页都在' Pages'包裹正在扩展。
现在根据LoadableComponent设计模式,每个页面都需要扩展LoadableComponent,并且应该覆盖' load()'和' isLoaded()' method.However我的问题是如何在每个页面类中扩展BasePage和LoadableComponent?
如果我使用多级继承,那么我如何为每个类定义isLoad()和isLoaded()?因为每个类都需要不同。嵌套组件也是不可能的。
public class BasePage<T extends BasePage<T>> extends LoadableComponent<BasePage>{
.......
}
public class LoginPage extends BasePage {
..........
}
请建议我一个解决方案??
答案 0 :(得分:2)
嗯,我解决了它: -
public class BasePage<T extends BasePage<T>> extends LoadableComponent<T>{
@Override
public boolean isLoaded() {
// Blank as all implemented algo comes under pages
}
@Override
public boolean isLoad() {
/// Will be Blank
}
}
public class LoginPage extends BasePage {
@Override
public boolean isLoaded() {
//Write logic
}
@Override
public boolean isLoad() {
/// Write Logic
}
}
答案 1 :(得分:0)
您可以覆盖子类中的所有非私有非静态方法。以下是基于您的项目的示例:
public class BasePage<T extends BasePage<T>> extends LoadableComponent<BasePage>{
public boolean isLoaded() {
// Do something interesting
}
public boolean isLoad() {
// Do something interesting
}
}
public class LoginPage extends BasePage {
@Override
public boolean isLoaded() {
// Do something new based on LoginPage
}
}
可在此处找到更多信息:http://docs.oracle.com/javase/tutorial/java/IandI/override.html