首先,对于刚刚“开始学习它/OOP”的人来说,它看起来不错!
像我一样跳出来的一件事:它有效,但似乎惯用错误(我们通常不这样做)是让您的 DAO(数据访问对象,“数据库接口”)扩展创建连接的类。相反,应该使用这个类——或者更好的是,这个类的结果,一个连接。
为什么?当您编写更多 DAO 类(在这个项目或其他项目中)时,您可能会发现这是两个不同的问题:
(1) 处理温度/湿度表和相关 SQL 以及温度特定逻辑和异常的代码。
(2) 负责连接数据库和创建连接对象的代码。
如果你有一个 databaseInterface.setConnection(Connection c) 方法,你会发现你的 databaseInterface 类更可重用。您可以设置来自各种来源的连接,创建具有不同连接的多个实例,在测试用例中注入模拟连接等。
这些是我多年来学到的想法,通常适用于具有数十到数百个数据访问类的项目。它在一个小项目中并不是非常重要,但仍然是一个可能的改进。
编辑:可能的控制器构造函数:
// My hardware interface
private Thermostat thermostat;
// My temperature DB tables interface
private TemperatureDAO temperatureDAO;
public Controller() {
thermostat = new Thermostat();
temperatureDAO = new TemperatureDAO();
// As the controller, I get to decide what connection the application uses.
temperatureDAO.setConnection(new ConnectionProvider().getConnection());
}
在此代码中,控制器决定使用哪个 DB 连接,而不是每个单独的 DAO。