前言算法
目前以LabVIEW为主要开发工具,熟悉常规开发框架(队列+状态机),我的用得比较多也感受比较好用和强大的(JKI,AMC),也用它们开发过一些测试平台,但感受到了一个瓶颈期,想寻求突破,提高LabVIEW的编程水平和思想,因此本身开始学习LVOOP,写此博文,一为本身知识的总结和思考消化,二是但愿能为有一样困惑的小伙伴带来一点启发。编程
OOP设计模式学习书籍选用了程杰的《大话设计模式》,我的感受还不错,挺适合我这种新手入门的,因此书中的内容在本身理解后会用Labview实现并分享出来,若有错误之处,还请大神指点一二。设计模式
简单工厂模式框架
所谓工厂模式,个人理解是,只需向工厂提供一个你想要的“产品标识”,工厂就能够生产出你想要的产品。也就是说,咱们将容易变化的地方放到客户端,在客户端选择实例化谁,这个过程我认为就是工厂生产的过程。用计算器的例子来讲,咱们能够将不一样的运算方法(+, -, *, /等)当作是产品,当咱们在界面中触发这几个事件时,至关因而向工厂中传入了产品标识,从而能够获得咱们想要的产品。工具
例如,当前需求实现加、减、乘、除四个运算的功能,来看LabVIEW的实现过程:学习
此项目仔细思考后,能够发现需求可变的地方极可能是须要我不断的去增长新的运算方法(好比今天添加一个平方运算,明天再添加一个开方运算,等等),那就能够考虑对变化的地方进行抽象,咱们建立一个抽象的运算类,而后按照需求去新增具体的运算类去继承抽象的父类,以下图所示:开发工具
运算的过程都是同样的,提供两个参数,而后计算获得结果,只是算法不同而已。那即可以在抽象类中定义两个私有数据(num1,num2),建立访问器对其进行读写操做,以下图所示。测试
接着再建立一个动态抽象方法(Get Result),获取计算的结果,抽象方法在具体的子类中实现。spa
而后根据需求建立四个具体的运算类,并从新Get Result方法,对应(+,-,*,/)的具体实现,以下图所示。设计
最后在建立一个工厂类,经过工厂即可按客户端需求实例指定对象,完成相应的运算操做。
当需求发送变化(如新增一个开方运算),只需新增一个开方运算类,在工厂类的product方法中添加新的“产品生产过程”,而后再添加新的事件触发便可,以下图所示:
从这个简单的例子即可感觉到OOP的“魔力”,方便扩展,维护等。源码参考:连接:https://pan.baidu.com/s/13bY5QVC5ajJtllpmj7cNLA 密码:1l0o