首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >恒温器转DB,OOP设计

恒温器转DB,OOP设计
EN

Stack Overflow用户
提问于 2013-06-10 03:21:23
回答 1查看 1.1K关注 0票数 0

我正在尝试我的第一个Java项目(刚刚开始学习/OOP)。我已经构建了一个恒温器电路,可以使用驱动程序获得温度,现在正在设计一个Java程序,该程序与恒温器连接并将数据插入到mysql DB中。

我试图正确地做这件事,因此我提出了我的类/对象以及它们如何交互的基本UML图。

我计划使用一个数据库接口类来扩展数据库连接类。此数据库接口将插入到DB中,数据库连接构造函数将创建数据库连接。

我还将有一个恒温器类,它与恒温器本身接口,它将有2个私有变量,温度和湿度。它将使用方法update temp,该方法将更新私有变量。get temp方法将提供这些私有变量的接口。

最后,控制类由恒温器和数据库接口类组成,并将调用这两个类的方法将温度/湿度数据放入数据库。

UML图:

你有什么想法吗?我不知道这个设计有多好。控制器是否以正确的方式与其他类交互?

谢谢您抽时间见我。

X.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-10 03:52:18

首先,对于“刚刚开始学习/面向对象”的人来说,它看起来相当不错!

有一件事和我一样:它可以工作,但看起来是错误的(我们通常不这样做),那就是让你的DAO (数据访问对象,“数据库接口”)扩展创建连接的类。相反,应该使用这个类--或者更好地说,使用这个类的结果,一个连接。

为什么?随着您编写更多的DAO类(在本项目或其他项目中),您可能会发现这是两个独立的关注点:

(1)处理温度/湿度表和相关SQL、温度特定逻辑和异常的代码。

(2)负责连接数据库和创建连接对象的代码。

如果你有一个databaseInterface.setConnection(连接c)方法,你会发现你的databaseInterface类更具可重用性。您可以设置来自各种来源的连接,创建具有不同连接的多个实例,在测试用例中注入模拟连接,等等。

这些是我多年来学到的想法,通常适用于具有数十到数百个数据访问类的项目。这在一个小项目中并不是一个非常重要的东西,但仍然是一个可能的改进。

编辑:可能的控制器构造函数:

代码语言:javascript
运行
复制
// 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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17013260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档