简体   繁体   English

扩展页面对象基类和LoadableComponent <?> 一起

[英]Extending Page Object Base class and LoadableComponent<?> together

Currently i'm implementing LoadableComponent design pattern for one of my project. 目前,我正在为我的一个项目实现LoadableComponent设计模式。

Earlier i was using a 'BasePage' which every page under 'Pages' package were extending. 之前我使用的是“ BasePage”,“ Pages”包下的每个页面都在扩展。

Now as per LoadableComponent design pattern, every page needs to extend LoadableComponent and should override 'load()' and 'isLoaded()' method.However my question is how can i extend both BasePage and LoadableComponent in each page class ?? 现在按照LoadableComponent设计模式,每个页面都需要扩展LoadableComponent并应覆盖'load()'和'isLoaded()'方法,但是我的问题是如何在每个页面类中同时扩展BasePage和LoadableComponent?

If i use multilevel inheritance , then how can i define isLoad() and isLoaded() for each class ?? 如果我使用多级继承,那么如何为每个类定义isLoad()和isLoaded()? as they needs to be different for every class.Also nested component would be impossible. 因为它们对于每个类都需要不同。嵌套的组件也是不可能的。

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

    .......

}


public class LoginPage extends BasePage {

     ..........  

}

Please do suggest me a solution ?? 请建议我一个解决方案??

Well , i solved it : - 好吧,我解决了:-

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
    }


}

You can override all non-private non-static methods in a subclass. 您可以覆盖子类中的所有非私有非静态方法。 Here is an example based on your project: 这是一个基于您的项目的示例:

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
    }  

}

More information can be found here: http://docs.oracle.com/javase/tutorial/java/IandI/override.html 可以在这里找到更多信息: http : //docs.oracle.com/javase/tutorial/java/IandI/override.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM