将Page Object Base类和LoadableComponent <! - ? - >一起扩展

时间:2014-10-06 05:37:34

标签: java

目前我正在为我的一个项目实施LoadableComponent设计模式。

早些时候我正在使用&#39; BasePage&#39;其中的每一页都在&#39; Pages&#39;包裹正在扩展。

现在根据LoadableComponent设计模式,每个页面都需要扩展LoadableComponent,并且应该覆盖&#39; load()&#39;和&#39; isLoaded()&#39; method.However我的问题是如何在每个页面类中扩展BasePage和LoadableComponent?

如果我使用多级继承,那么我如何为每个类定义isLoad()和isLoaded()?因为每个类都需要不同。嵌套组件也是不可能的。

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

    .......

}


public class LoginPage extends BasePage {

     ..........  

}

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

2 个答案:

答案 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