一、安装方法
vi package manager 搜 NI State Pattern Actor并进行安装
这里有个官方范例可以学习
二、扩展包作用
其实就是你有一堆继承于同一父类的Actor,然后你想在程序里切换这些Actor,以实现具体功能的切换。有点抽象,其实有个很常见的应用,就是取款机或者各种其它类似的机器。
在不同的页面,你的按钮的功能会不一样,具体显示窗口显示的内容也会不一样。但一样的是,这个界面总是保持着目前这个形式。
假设每个“界面+按钮”的组合都是一个Actor,这些组合的切换,都是通过切换Actor来实现。
大家是不是有点感觉了?
三、扩展包使用教学
3.1 扩展包咋用
具体api在如图这个位置,只有一个方法可供使用。
使用起来很简单,新建一个Actor就叫它“抽象状态”吧,继承于这个State Actor,然后就可以使用该方法了。(有人可能会问我继承里咋找不到这个State Actor,随意打开个vi,把这个函数拖进去,就能找到State Actor这个类去继承了)
然后基于这个抽象状态,再做几个具体的状态1,2,3……方便你去切换。
具体的切换函数实现如下:
注意!输出变成了State out!
嗯,这样就实现了Actor的切换(才怪。。。)我们知道,一般actor里的方法,我们是通过发送消息给Actor去实现的。所以我们也要创建消息,但是我们打开消息的Do.vi
图里红框所示的这个vi,又会把你的actor转回去,而我们干的事情是把Actor换成另外的Actor。所以要把这个vi删除,该vi解释有点拗口,想看它实际功能的可以打开该vi的具体程序框图。
把Do.vi改成如下图所示即可。
如此你就做了一个最简单的Actor切换。
3.2 Change State.vi内部有啥
老的操作者退出(这个vi其实是用于写一些退出的动作的)——>替换新的操作者(实际的交换在这个vi里)——>新的操作者进入(这个vi其实是用于写一些进入前的动作)。
退出和进入,我们在继承了State Actor后可以重写这两个方法,以实现Actor退出和进入时候的一些操作。
四、简单小案例
大概就是这样的一个效果,其余actor较为常规的操作我就不多赘述了,大家可以参考源码进行学习使用,应该还是比较有意思的且有用的一个工具包。如果大家觉得这个案例过于简单,也可以参考自动取款机的样式做一个小范例,我这边就偷个懒了。
源码如下:
通过百度网盘分享的文件:AF state pattern学习.7z
链接:https://pan.baidu.com/s/1OqHoNGg3mqWqOriE2kTs7A?pwd=siyt
提取码:siyt
–来自百度网盘超级会员V6的分享