2

在我使用“inFusion Hydrogen”分析我的项目后,很容易发现 myQuestionFun() 引起了功能嫉妒。

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()是父类的抽象方法的函数,所以动不了。

4

2 回答 2

1

将以下代码作为方法从 Child 提取到父亲中:

protected List<TableInfo> getTabList() {
    final 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);
    }
    return tabList;
}

将以下方法移至父亲,如果它总是应该返回 this.dataModel :

public DataModel<Report> getDataModel(){
   return this.dataModel;
}
于 2016-07-19T13:36:23.770 回答
0

删除dataModel字段形式Father并更改为界面。

于 2016-07-19T13:20:08.900 回答