问题描述
我正在做一些抽象的研究,但我没有找到我要找的东西。要么我看起来不对,要么我在寻找不可能的东西。
假设我有抽象类 Animal
...
public abstract class Animal {
private String name;
private String owner;
}
现在,我可以让一些动物扩展 Animal。
public class Dog extends Animal {
private string additionalAttribute;
public Dog(String name,String owner,String additionalAttribute) {
super(name,owner);
this.additionalAttribute = additionalAttribute;
}
}
假设有更多的动物具有仅针对特定动物类型的附加属性,而超类 Animal
不知道这些属性。
我想创建一个 DAO 来处理所有这些不同的动物。我认为为所有不同的动物创建 DAO 是低效的。所以我为抽象类 Animal
创建了一个 DAO。
public class AnimalDao {
private Database db;
public AnimalDao(Database db) {
this.db = db;
}
public void create(Animal animal) {
db.save(animal);
}
public Animal read(String id) {
db.get(id);
}
}
当我创建这个 dao 的一个实例并添加一个 Dog,然后尝试获取它时,我必须对我保存并想要获取的动物类型进行一些转换。但是当我得到可能是狗、猫或其他什么的动物后,那些额外的属性就不存在了。
在某种程度上,我明白为什么会这样。我的问题是,有没有办法创建一个 Dao,它可以保存我的超类的所有子类?还是我必须为每个子类创建一个 Dao?这将是非常愚蠢的,因为实现将完全相同。
有没有办法做到这一点?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)