2014-10-06 22 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 
    } 


}