我有一个Java的情况,我有一个外部设备,我想通过串行I / O进行通信。我知道怎么做,但我现在处于重构模式,以确保我有一个可维护的软件包,&正在寻找关于在高层做什么/不做的建议(以下具体问题)
从概念上讲,假设我有一个带有多个方法的低级DeviceIOChannel
接口(getInputStream,getOutputStream和其他一些用于控制连接/断开检测的方法等),由一个或多个处理的类实现各种数据链路类型的I / O(RS232,TCPIP等)。我的一些软件,我们称之为Device
类,致力于管理I / O(解析输入,构造输出,管理低级状态机),但不知道如何{{1做它的事情(所以我可以使用RS232或TCPIP而不必更改DeviceIOChannel
类)。所以我可能会将Device
作为参数传递给DeviceIOChannel
的构造函数。我还想向外界公开某种数据模型。
Device
/ DeviceIOChannel
的分区是否合适?Device
需要在工作线程上积极做一些事情。设置它的最佳方法是什么?我应该创建并管理自己的Device
或Thread
吗?或者我应该传递ScheduledExecutorService
作为构造参数吗?ScheduledExecutorService
类应该具有与构造不同的Device
方法? (在构造中进行所有初始化让我感到紧张......似乎类实例构造应该很快,然后应该为稍后的init或启动阶段保留冗长的东西。)startup()
类具有一对关闭/重启方法,而不关闭+需要创建新的Device
实例,该怎么办?Device
DeviceDataModel
实现的Device
接口是否有意义,或者我应该有一些单独的类DeviceDataModel
以某种方式有两个 - 与Device
班级进行沟通的方式?答案 0 :(得分:1)
一次一个地回答你的问题。