有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案