2014-10-06 63 views
0

当前我为我的项目之一实现LoadableComponent设计模式。扩展页面对象基类和LoadableComponent <?>在一起

早些时候我使用'BasePage','Pages'包下的每个页面都在扩展。

现在根据LoadableComponent设计模式,每个页面都需要扩展LoadableComponent,并且应该重载'load()'和'isLoaded()'方法。但是我的问题是如何在每个页面类中扩展BasePage和LoadableComponent? ?

如果我使用多级继承,那么我怎样才能为每个类定义isLoad()和isLoaded()?因为它们需要每个类都有所不同。也不可能嵌套组件。

public class BasePage<T extends BasePage<T>> extends LoadableComponent<BasePage>{ 

    ....... 

} 


public class LoginPage extends BasePage { 

    .......... 

} 

请不要建议我一个解决方案?

回答

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

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 
    } 


}