从labview的中文版帮助文档中接触“程序设计模式”一词的,这个相对学术化的词语是对一系列用于LabVIEW程序设计结构的归纳和总结。在建造房子时,需要针对房子的用途设计整个房屋的架构,确保房子在这个架构上的坚固性和可建造性。
写程序时同样如此,不同的应用需要使用不同的程序设计结构。例如我们在LabVIEW中构建一个用户界面型程序时,往往首先在背面板中加入一个大的while循环以使程序持续运行。如果需要响应用户界面事件则还需要加入一个Event事件结构。那么我们是否曾经考虑过以下的这些问题:
(1) 应用中是否存在并行响应的情况?如在持续的数据采集过程中,是否需要同时响应单击菜单的事件?
(2) 底层获取的数据如何与上层的数据显示部分进行数据交互?
(3) 上层的界面如何受底层程序的控制?
(4) 同一个循环中采用哪种方式进行数据交换?是局域变量、全局变量、共享变量还是移位寄存器?
(5) 程序是否具有可扩展性?
(6) 如果程序运行过程中,发生系统错误或者硬件通讯错误,是否会停止运行?待错误排除后是否会继续运行?
(7) 如何组织程序中的核心数据结构?是否需要采用面向对象程序设计?
(8) 如何记录测试数据并生成报表?如何保存用户配置参数?
(9) 如何处理程序运行中的断电情况?重新启动时的继续运行?数据的最低丢失?
(10) 如何实现运行过程的采样触发和多点采样的同步?
当然,也许只是使用LabVIEW临时地调试或开发某个小的应用,无需考虑上述的问题。但是,如果使用LabVIEW开发一个典型应用的程序却无法回避这些问题。因此,有必要对各种程序开发的应用进行归纳和总结,提取它们对应的LabVIEW程序结构中的共性。此外,针对这些共性研究哪种结构更加适合于应用。这些结论综合起来就形成了程序设计的模式。
对于初学者而言,理解和掌握程序设计模式往往能起到事半功倍的效果;而对高级用户而言,归纳各种程序设计模式又能够不断完善程序中遇到的问题,并衍生一套符合特定应用的特有的程序设计模式。
|