我正在尝试为一个库设计一些接口,它将支持它的数据的多个存储系统-比如mysql或mongo。
我正在尝试设计一个单一的Model接口,以便任何使用我的应用程序接口的人都能看到可用的数据。问题是ID或主键类型不同。例如,在mysql中,它是一个Long,而mongo使用ObjectId,等等。
我想我可以用泛型来处理这个问题,但我不确定这是不是正确的方法。我不想为了获得正确的ID类型而一直进行强制转换。
这是一种可以接受的方法,还是我应该使用其他方法?我不想用这种方法构建我的API,然后遇到问题,必须全部重做。
狗模型界面:
public interface DogModel<T> {
T getId();
}特定于sql的狗模型:
public class SqlDogModel implements DogModel<Long> {
private final Long id;
public SqlDogModel(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
}如何在通用存储接口中声明模型:
public interface StorageAdapter {
Optional<DogModel> getDog(String name);
}发布于 2021-07-01 11:09:08
它可以变得更简单:抽象类可以实现接口,但在我的示例中,基类中有getter和setter逻辑,而这不能在接口中发生,因为接口没有逻辑。
public abstract class DogModel < T > {
T id;
public T getId() {
return id;
}
public void setId(T id) {
this.id = id;
}}
public class SqlDogModel extends DogModel < Long > {}https://stackoverflow.com/questions/68203452
复制相似问题