Java向类添加静态方法

标签 java oop

大家好,

这是一个原则问题,而非事实问题。

我有一个在客户端和服务器上都使用的数据结构。

但是,在服务器端,我想要从某种数据存储创建客户端的功能(目前 SQL,它曾经是序列化数据,但这并不重要)。

最初我有一个名为“Datastore”的巨型类,它具有用于检索任何存储对象的静态方法。

虽然并不可怕,但这并不完全是面向对象的,而且也不完全是可扩展的。

所以我考虑将这些静态方法移至数据结构本身。然而,这意味着共享客户端库知道如何从我的数据存储中检索对象 - 这有点愚蠢。

因此,我现在正在为新数据存储包中的每个对象创建新类,每个类都包含用于从数据存储中检索一个对象的静态方法。

我的问题是,如何表示这些数据管理器类和它们检索的对象之间的关系?

从功能上来说,这并不重要。静态方法工作得很好。但我想向 future 的我和其他 future 的开发人员表明,数据检索器类和对象类是紧密联系在一起的。

我的第一个想法是让数据检索器扩展数据结构。然而,这将需要声明默认构造函数并暗示该类可以被实例化 - 它可以,但为什么要这样做呢?

我的第二个想法是让数据检索器扩展数据结构,但要抽象。这将标志着与其他开发人员的紧密关系,并且还清楚地表明仅添加了新方法,没有添加新字段。

但是,用抽象类扩展具体类似乎很奇怪,而且 Java 仍然让我创建默认构造函数。

最佳答案

My question is, how do I signify the relationship between these data manager classes and the objects that they retrieve?

这是一个标准的行业问题:如何将数据从数据库获取到应用程序中。常见的解决方案是使用 DAO 模式,即让一个数据访问对象 (DAO) 负责从数据库中检索对象。

如果您要检索员工的个人信息、工资等,您可以使用 EmployeeDAO 类来从相应的表中检索这些信息。如果您要检索公司的利润、地点、员工数量,您可以使用 CompanyDAO 类从数据库中检索此对象。

在此之上可能是一个服务层,用于执行业务逻辑;另外,还有一个 DAO 管理器,用于实例化 DAO 并返回对需要它们的任何类的引用。

关于Java向类添加静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16681893/

相关文章:

java - 如何调用抽象类的方法?

java - ManyToMany RelationShip 列不允许为 NULL

java - 了解 Java IOException

c# - 客户类和服务类的区别

Java 到 Cpp 代码转换 : compareTo

java - 使用 JComboBox - 为什么 getSelectedItem() 可以工作并且 Java 对象?

java - Eclipselink实体类自动扫描发现非实体

php - 语法 '%s' 和 '%d' 作为调用变量的简写是什么意思?

java - 哪种方法最好在有/没有getter/setter的方法/构造函数中设置参数?

javascript - 无法读取数组的属性