java - 使用多个相似的类高效地执行 CRUD 操作?

标签 java oop optimization

我有一个抽象类,我们将其称为Vehicle柴油电动燃气类扩展了车辆。这 3 个类有自己的方法和变量,以及它们从 Vehicle 继承的内容。

我想将柴油电力天然气对象中的变量放入同一个表中一个数据库。从 Electric 对象创建的记录只会有一些空列,其中没有与 Diesel 对象相同的变量,等等。

我想要创建插入行、更新行和检索行的方法,所有方法都接受这些类中的对象作为参数。

我正在寻找这个问题的最佳解决方案,因为我认为我不知道它是什么。到目前为止我能想到一些解决方案,但我不喜欢其中任何一个:

  1. 创建以下每个方法中的 4 个:插入、更新、删除和检索/选择。这会导致大量重复代码。

    public void AddVehicle(Diesel diesel)
    public void AddVehicle(Electric electric)
    public void AddVehicle(Gas gas)
    
    public Electric ViewVehicles()
    public Diesel ViewVehicle()
    public Gas ViewVehicle()
    
    public void RemoveVehicle(Diesel diesel)
    public void RemoveVehicle(Electric electric)
    public void RemoveVehicle(Gas gas)
    
    public void UpdateVehicle(Diesel diesel)
    public void UpdateVehicle(Electric electric)
    public void UpdateVehicle(Gas gas)
    
  2. 创建每个方法,以便它可以接受任何对象:(有没有办法指定一个对象列表,而不是采用任何对象)可以带,但仍然只带其中之一?即。public void AddVehicle (Diesel 柴油 || Electric electric || Gas 燃气))

    public void AddVehicle(Object vehicle)
    
    public Object ViewVehicle(Object vehicle)
    
    public void RemoveVehicle(Object vehicle)
    
    public void UpdateVehicle(Object vehicle)
    
  3. 创建一个可以包含任何类(柴油、电力或天然气)的“主”类,然后将其传递到插入/更新/查看/删除方法中。 (设置插入/更新/ View 方法以接受此“主”类作为参数。)“主”类的不完整构造函数:

    public MasterVehicle(Diesel diesel)
    public MasterVehicle(Electric electric)
    public MasterVehicle(Gas gas)
    
  4. 其他一些更合适、更干净、更有意义的解决方案。

但是#4 可能是什么?

最佳答案

关于您的选项: 首先,您可以使用车辆而不是物体,只要柴油电动汽油实现/扩展车辆。 它应该可以完成这项工作。

另外对于选项二中的 ViewVehicle :

public Object ViewVehicle(Object vehicle)

您可以使用泛型方法,以便它始终返回与它进入的类型相同的类型。 更多信息在这里:http://docs.oracle.com/javase/tutorial/extra/generics/methods.html ...虽然我不清楚为什么您尝试将对象发送到方法,然后从该方法返回。

关于java - 使用多个相似的类高效地执行 CRUD 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016118/

相关文章:

database - 构建可扩展数据库的最佳实践

java - 放入 JSON 对象中的变量

java - 连续数字的正则表达式

c++ - 重新定义要在函数中使用的静态变量 - 有更好的方法吗?

php - 接口(interface)中的构造方法

mysql - 优化 Sql 查询以获得更好的性能

C# IL 代码优化 : conditional operator (? :) 和相同变量的重新分配

java - 线程使用的 System.setProperty 会影响与外部网络元素通信的其他线程。如何解决?

java - 如何使用 Gradle 为测试和生产代码指定不同的(PMD、Checkstyle、Findbugs)规则集?

java - 不能从静态上下文中引用非静态方法(虽然已经创建了非静态方法)?