2
當我使用「inFusion Hydrogen」分析我的項目後,很容易找出myQuestionFun()導致功能嫉妒。如何解決基於Java的項目功能羨慕?
public abstract class Father{
protected DataModel dataModel;
public abstract void myQuestionFun();
}
public class Child extends Father{
public DataModel<TableInfo> tableList = new DataModel<TableInfo>;
public DataModel<TableInfo> getTableList(){
return this.tableList;
}
@Override
public DataModel<Report> getDataModel(){
return this.dataModel;
}
@Override
public void myQuestionFun(){
List<TableInfo> tabList = new ArrayList<TableInfo>();
for (int i=0; dataModel.getDataList().size(); i++) {
Report rep = (Report)dataModel.getDataList.get(i);
TableInfo tabInfo = new TableInfo();
tabInfo.setId(rep.getId());
tabInfo.setName(rep.getName());
tabList.add(tabInfo);
}
tableList.setPage(dataModel.getPage());
tableList.setSorter(dataModel.getSorter());
}
}
問題是,解決這個問題的最好方法是什麼? 因爲myQuestionFun()是父類的抽象方法的函數,所以我無法移動它。
感謝您回答。 – sept08
我接受你關於將getDateModel()方法移到Father的建議。但我不知道如何從孩子到父親提取一種方法。許多子類在我的項目中擴展到Father類,每個子類的myQuestionFun()方法的實現是不同的。 – sept08
如果它總是返回this.dataModel,我建議將getDataModel()移到父親。如果情況並非如此,那麼要麼將其留在那裏,要麼將一個通用實現移至父親,並僅在需要的那些孩子中覆蓋它。 –