Dao模式的java抽象
我正在做一些关于抽象的研究,但我没有找到我想要的东西。要么我看得不对,要么我在寻找不可能的东西
假设我有一个抽象类Animal
public abstract class Animal {
private String name;
private String owner;
}
现在,我可以让一些动物延伸到动物身上
public class Dog extends Animal {
private string additionalAttribute;
public Dog(String name, String owner, String additionalAttribute) {
super(name, owner);
this.additionalAttribute = additionalAttribute;
}
}
假设有更多的动物具有特定于特定动物类型的附加属性,而超类Animal
不知道这些属性
我想制作一把刀,用来涂抹所有这些不同的动物。我认为为所有不同的动物制作一把刀是没有效率的。所以我为抽象类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?或者我必须为每个子类创建一个Dao吗?这将是非常愚蠢的,因为实现将完全相同
有办法做到这一点吗
共 (0) 个答案