"高内聚低耦合"是软件工程中判断设计好坏的标准,对于面向对象程序设计而言,类内成员应当尽可能紧密关联,而不同功能模块之间则应该尽可能降低其耦合度。软件主界面作为表示层的一个模块,应当与算法层三维重建流水线解耦,专注于界面布局管理和人机交互的实现。因此,fusionScanner在本软件中充当两个角色。一方面,模拟三维扫描仪的行为,将主界面的操作指令抽象为一个虚拟扫描仪的动作,通过该类执行。另一方面,主界面与算法层的数据交互,均需要通过fusionScanner类进行管理和调度,此时该类则充当数据接口的作用。
fuskmscarmer类类图如图所示,其中私有成员Fusion_sp为指向三维重建算法的智能指针,作为私有成员,它不能被其他类直接访问,这样可以将算法层与其他层隔离,防止数据干扰。sensor为指向摄像机设备的指针,fusionScanner通过该指针进行数据采集操作获取原始数据。
作为界面与算法层交互的唯一接口,该类需要保证在系统运行周期内只存在一个实例,通过送种方式不但可以节省系统资源,更重要的是可以保证数据通道和硬件设备的唯一性,另外,本系统三维扫描软件可以运行在三种状态下:默认模式,定制模式和离线模式,三种方式所构造的FusionScanner有所不同,若不加以限制,则可能出现多个实例共存或参数初始化异常,导致系统崩溃。