如何定义类和接口层次结构?



我对如何为以下场景定义类和接口层次结构感到困惑。

以下是接口

public interface Save {
public void save(List<Object> pojoList);
public void save(String query);
} 
public interface Update {
public void update(List<Object> pojoList, List<String> conditionList);
public void update(String query);
} 
public interface Delete {
public void delete(String query);
} 

以下是类:

Class DbOperations {
}
class SaveOperation extends DbOperations implements Save {
}
class UpdateOperation extends DbOperations implements Update {
} 

所以我担心的是:

  1. 我想调用 SaveOperation,DeleteOpration 类方法 使用 DbOperations 实例(基类)

  2. 你能告诉我哪个类应该是哪个接口吗?

  3. 对上述层次结构的任何修改??

提前致谢

通过让多个类实现接口,您可以定义一个将接口作为参数并调用其方法之一的方法,然后该调用的结果将取决于该接口在运行时的实际类型。

也就是说,我认为定义一个不定义其类将继承的任何方法的接口 DbOperation 没有任何优势。

如果您有理由这样做(有可能,如果您编写的代码只是对方案的简化),从语义的角度来看,我会发现将DbOperations作为层次结构的根接口更有意义,SaveUpdateDelete作为实际类和根之间的抽象类(或接口):

public interface DbOperation {
public String thisOperation();
}
public abstract class Save implements DbOperation {
public String thisOperation(){
return "Save";
}
public void save(List<Object> pojoList);
public void save(String query);
} 
public abstract class Update implements DbOperation{
public String thisOperation(){
return "Update";
}
public void update(List<Object> pojoList, List<String> conditionList);
public void update(String query);
} 
public abstract class Delete implements DbOperation {
public String thisOperation(){
return "Delete";
}
public void delete(String query);
} 
class SaveOperation implements Save {
}
class UpdateOperation implements Update {
} 

所以关于你的关注,

我想调用保存操作,删除操作类方法使用实例 的数据库操作(基类)

我想,它会是这样的:

DbOperations op = new SaveOperation(/*Params*/);
// Check type to cast
if(op instanceof Save)
{
// Cast to Save and call method
((Save)op).save(/*Params*/);
}
// For delete
if(op instanceof Delete)
{
// Cast to Save and call method
((Delete)op).delete(/*Params*/);
}

因此,您不需要任何修改。

最新更新