java - 在 Java 中管理具有几乎相同属性的 2 个类的最佳方法

标签 java oop

我想首先说明,由于超出这个问题范围的原因,无法修改数据库。

也就是说,问题是我有 2 个数据库对象(T1、T2),它们具有几乎相同的属性,并且它们共享相同的 UI 代码和业务逻辑。含义取决于 UI 显示 T1 数据或 T2 数据的配置选项。所有用于管理数据的逻辑也是相同的。

我不希望我的应用程序逻辑代码中充斥着 instanceof 运算符,并且基本上管理 2 套相同的代码。所以我的解决方案是创建一种将 T1 或 T2 作为构造函数的包装类 (TCombo)。所有的 getter 和 setter 都有类似的设计

public String getProp1() {
    if(o instanceof T1) ((T1)o).getProp1();
    else(o instanceof T2) ((T2)o).getProp1();
}

并且对于 setter 也基本上遵循这一点,所以当我设置一个值时,DB 对象被正确设置。这样做让我可以使用一组代码,并在整个代码中管理这个 TCombo 类,而且效果很好。问题是效率太低了,因为我的应用程序处理大型数据集,必须为数据集中的每个项目创建这个 TCombo 类会造成可怕的加载时间。

我的问题是:管理这些类的最佳方式是什么,这样我就不必维护 2 套逻辑代码,而且速度也很快?

最佳答案

这或多或少是设计用来处理的接口(interface),因此您使用常用的 getter 和 setter 设置了一个名为 T 的接口(interface),然后同时拥有 T1T2 实现它。两者通用的 then 代码可以传递对接口(interface)的引用,并调用通用方法,而无需使用对 instanceof 的调用。这将使您有可能在各个实例的 getter 和 setter 中实现自定义代码(例如,如果您想在 T1set 方法中进行验证或某些操作,但不在T2 等)

另一种选择是拥有一个公共(public)基类,您的两个数据库对象都可以扩展该基类,并且该基类包含它们之间的所有公共(public)字段。然后你只需传递对基类的引用。这样做的额外好处是不必在同一个地方实现相同的 getter 和 setter。

在任何一种情况下,您都需要使用 instanceof 和转换来访问 T1T2 独有的方法,但是您应该能够更少地这样做。

关于java - 在 Java 中管理具有几乎相同属性的 2 个类的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16154638/

相关文章:

c# - 具有内部类对象的抽象类构造函数继承

c++ - C++ 中的类 C 程序?

java - 需要帮助推断 Java 代码

java - Sonar,在 setter POJO 上使用私有(private)以避免重复

java - 表名是什么?

java - 如何读取和修改amr音频文件数据?

java - 如何读取pdf文件并将其写入outputStream

java - 流口水规则中的多个 boolean 条件?

无论什么驱动程序,Java都不会连接到数据库

php - 是否可以在不循环的情况下检查一个值是否存在于充满对象的数组中?