Java 我的代码中有许多重复函数,如何简化它们

Java 我的代码中有许多重复函数,如何简化它们,java,spring-boot,model-view-controller,design-patterns,Java,Spring Boot,Model View Controller,Design Patterns,这是一个SpringBoot项目,使用MVC结构 我有3种类型的需求扩展到BaseDemand public class DropTableDemand extends BaseDemand{} public class ExpandTableDemand extends BaseDemand{} public class CreateTableDemand extends BaseDemand{} 我有3个服务来控制它们,并使用mybatis plusDAO保存它们 public class

这是一个SpringBoot项目,使用MVC结构

我有3种类型的需求扩展到
BaseDemand

public class DropTableDemand extends BaseDemand{}
public class ExpandTableDemand extends BaseDemand{}
public class CreateTableDemand extends BaseDemand{}
我有3个服务来控制它们,并使用
mybatis plus
DAO保存它们

public class DropTableDemandService {

    @Autowired
    private DropTableDemandDao dropTableDemandDao;

    public List<DropTableDemand> queryByOrgIDs(List<String> orgIDs, Integer page, Integer rows) {
        if (page != null && rows != null) {
            PageHelper.startPage(page, rows);
        }
        Weekend<DropTableDemand> weekend = Weekend.of(DropTableDemand.class);
        WeekendCriteria<DropTableDemand, Object> criteria = weekend.weekendCriteria();
        criteria.andIn(DropTableDemand::getTableOrg, orgIDs);
        return dropTableDemandDao.selectByExample(weekend);
    }
}
公共类DropTableDemandService{
@自动连线
私人droptabledemandao droptabledemandao;
公共列表querybyrogids(列表组织ID、整型页面、整型行){
如果(第页!=null&&rows!=null){
PageHelper.startPage(页,行);
}
Weekend Weekend=Weekend.of(DropTableDemand.class);
WeekendCriteria标准=weeken.WeekendCriteria();
andIn(DropTableDemand::getTableOrg,orgIDs);
返回dropTableDemandDao.selectByExample(周末);
}
}
公共类ExpandTableDemandService{
@自动连线
私有ExpandTableDemandao ExpandTableDemandao;
公共列表querybyrogids(列表组织ID、整型页面、整型行){
如果(第页!=null&&rows!=null){
PageHelper.startPage(页,行);
}
周末=周末的(ExpandTableDemand.class);
WeekendCriteria标准=weeken.WeekendCriteria();
andIn(ExpandTableDemand::getTableOrg,orgIDs);
返回expandTableDemandDao.selectByExample(周末);
}
}
公共类CreateTableDemandService{
@自动连线
私有CreateTableDemandDao CreateTableDemandDao;
公共列表querybyrogids(列表组织ID、整型页面、整型行){
如果(第页!=null&&rows!=null){
PageHelper.startPage(页,行);
}
Weekend Weekend=Weekend.of(CreateTableDemand.class);
WeekendCriteria标准=weeken.WeekendCriteria();
andIn(CreateTableDemand::getTableOrg,orgIDs);
返回createTableDemandDao.selectByExample(周末);
}
}
刀是这样的

public interface CreateTableDemandDao extends MyMapper<CreateTableDemand> {

}
公共接口CreateTableDemandDao扩展MyMapper{
}
公共接口DropTableDemandDao扩展MyMapper{
}
这些服务中有许多重复的功能,但控制不同的类,如何简化它们{
public WeekendCriteria getCriteria(Class clazz) {
    Weekend<BaseDemand> weekend = Weekend.of(clazz);
    WeekendCriteria<BaseDemand, Object> criteria = weekend.weekendCriteria();
    return criteria;
}

....
getCriteria(CreateTableDemand.class).andIn(CreateTableDemand::getTableOrg, orgIDs);
....
周末=周末的(clazz); WeekendCriteria标准=weeken.WeekendCriteria(); 退货标准; } .... getCriteria(CreateTableDemand.class).andIn(CreateTableDemand::getTableOrg,orgIDs); .... 试试这个!也许这是可行的

public interface CreateTableDemandDao extends MyMapper<CreateTableDemand> {

}
public interface DropTableDemandDao extends MyMapper<DropTableDemand> {

}
public WeekendCriteria getCriteria(Class clazz) {
    Weekend<BaseDemand> weekend = Weekend.of(clazz);
    WeekendCriteria<BaseDemand, Object> criteria = weekend.weekendCriteria();
    return criteria;
}

....
getCriteria(CreateTableDemand.class).andIn(CreateTableDemand::getTableOrg, orgIDs);
....