ActorFrameWork系列教程來到了第二期,大家還記得什么是對象什么是類嗎?還沒有學(xué)習(xí)過第一期或者忘記了的同學(xué)們,請看往期教程回顧學(xué)習(xí)一下吧!
本文教程:
在LabVIEW中創(chuàng)建Actor Framework的抽象消息及接口
一、為什么要用到抽象消息和接口?
一般情況下,我們在啟動界面使用“啟動根操作者”啟動根操作者,然后在根操作者和其他操作者的適當(dāng)位置用“啟動嵌套操作者”來啟動其他操作者。就好比一個(gè)用戶登錄程序,其根操作者即為Controller,用以控制整體程序的邏輯,它的嵌套操作者可分為:用戶操作界面的VIEW;登錄判斷模塊、用戶管理模塊等Model。這就是所謂的MVC框架,MVC框架的更多內(nèi)容在后續(xù)給大家詳細(xì)講解。
上一期我們學(xué)會了在同一個(gè)操作者中進(jìn)行消息的傳輸和接收,但在嵌套操作者之間是怎么互相傳消息的呢?對于一個(gè)嵌套于跟操作者之下的嵌套操作者,要如何傳消息給根操作者呢?用俗話說,就是小兵要怎么一層層地把前線戰(zhàn)報(bào)傳給將軍呢? 接下來本文以NestActor表示嵌套操作者,是被調(diào)用的關(guān)系。以Root Actor為根操作者,是調(diào)用的關(guān)系。 由于面向?qū)ο笮枰档?a href="http://hljzzgx.com/tags/耦合/" target="_blank">耦合性,那么基于類的操作者也需要考慮如何降低耦合性。當(dāng)Nest Actor給Root Actor發(fā)送消息時(shí),需要調(diào)用Root Actor的消息類的Send ***.vi,這就導(dǎo)致了Nest Actor依賴于Root Actor。為了解除這種依賴關(guān)系,我們需要對Root Actor和NestActor解耦。這時(shí)候我們就需要用到抽象消息或者接口來進(jìn)行Nest Actor對Root Actor的消息傳輸。
二、 如何創(chuàng)建抽象消息前面我們得知了嵌套操作者傳送消息的方式是抽象消息,那么接下來,小編將手把手教你如何在LavVIEW中創(chuàng)建抽象消息。
1. 創(chuàng)建Actor
創(chuàng)建兩個(gè)Actor,分別命名為Root Actor和Nest Actor。
2. 創(chuàng)建抽象消息
在項(xiàng)目資源管理器中右鍵Nest Actor.lvclass → ActorFramework → Create Abstract Message for Caller,輸入消息名稱為New Data,放置一個(gè)字符串控件,命名為String Data,點(diǎn)擊Create Message。這時(shí)Nest Actor.lvclass的屬性中將新增一個(gè)New Data Msg類,用來指定由哪個(gè)消息來執(zhí)行。為這個(gè)New Data Msg類創(chuàng)建寫入的方法。
3. 為Root Actor創(chuàng)建一個(gè)靜態(tài)方法
為Root Actor創(chuàng)建一個(gè)靜態(tài)方法作為消息執(zhí)行方法,命名為Update Data.vi。并在前面板放置字符串控件,命名為String Data,并配置接線端。在程序框圖中將String Data連接到單按鈕對話框。
4. 繼承抽象消息
在項(xiàng)目資源管理器中右鍵Update Data.vi→ Actor Framework→Create Child of Abstract Message,選擇Nest Actor的New Data Msg.lvclassx消息類。
5. 重寫Root的Actor Core
為Root Actor重寫Actor Core.vi。在Actor Core.vi中將Root Actor的Update Data Msg.lvclass寫入Nest Actor.lvclass的屬性中,并通過Launch Nested Actor.vi啟用為Root Actor的嵌套操作者。
6. 發(fā)送抽象消息
為Nest Actor創(chuàng)建一個(gè)靜態(tài)方法Write New String Data.vi發(fā)送String Data,如下圖所示,將Hello以New Data類型的抽象消息傳送給調(diào)用方。
7.重寫Nest Actor的Actor Core
重寫Nest Actor的 Actor Core.vi調(diào)用Write New String Data.vi。
8. Launch根操作者
創(chuàng)建一個(gè)Launch.vi啟用Root Actor。
啟動Launch后,可以看見彈窗“Hello”。此時(shí)一個(gè)包含著信息“Hello”的抽象消息就從Nest Actor傳送給了它的調(diào)用方Root Actor。
三、如何創(chuàng)建接口
LabVIEW2020以上版本支持利用接口在嵌套操作者之間傳送消息,接口的使用方法比抽象消息要簡單得多。接下來LabVIEW版本足夠的小伙伴們,我們一起來嘗試創(chuàng)建接口吧!
1. 創(chuàng)建Actor
創(chuàng)建兩個(gè)Actor,分別命名為Root Actor和Nest Actor。
2. 創(chuàng)建接口
在Nest Actor創(chuàng)建一個(gè)接口,命名為Nest Msg Interface.lvclass。
3. 為接口創(chuàng)建動態(tài)方法
為Nest Msg Interface.lvclass創(chuàng)建一個(gè)動態(tài)方法New Data.vi,前面板添加字符串控件String Data,并為該方法創(chuàng)建一個(gè)消息。
4.繼承接口
設(shè)置Root Actor.lvclass繼承接口Nest Msg Interface.lvclass,并重寫New Data.vi。
5. 重寫接口方法
Root Actor.lvclass重寫Nest Msg Interface.lvclass的New Data.vi方法。
6. 重寫Root Actor的Actor Core
為Root Actor重寫Actor Core.vi。在Actor Core.vi中通過Launch Nested Actor.vi啟用Nest Actor為Root Actor的嵌套操作者。
7. 重寫NestActor的Actor Core
為Nest Actor創(chuàng)建一個(gè)靜態(tài)方法Write New String Data.vi發(fā)送String Data,并重寫 Actor Core.vi調(diào)用Write New String Data.vi。
8.Launch 根操作者
創(chuàng)建一個(gè)Launch.vi啟用Root Actor。
我們可以看到Hello的彈窗也出現(xiàn)了,通過接口也可以實(shí)現(xiàn)嵌套操作者向調(diào)用方傳送消息。
怎么樣,接口的使用方法是不是比抽象消息方便呢?而且改變接口的方法只需要修改Root Actor的重寫方法就可以了,而不是像抽象消息那樣需要把消息刪除后重新創(chuàng)建消息。
以上就是如何在LabVIEW中為ActorFramework創(chuàng)建抽象消息和接口的方法,如果想要進(jìn)一步了解抽象的類和對象是如何通過ActorFramework來實(shí)現(xiàn)的話,敬請期待接下來關(guān)于ActorFramework的一系列技術(shù)分享。
審核編輯 :李倩
-
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151015 -
LabVIEW
+關(guān)注
關(guān)注
1970文章
3654瀏覽量
323307 -
華穗科技
+關(guān)注
關(guān)注
1文章
12瀏覽量
80
原文標(biāo)題:教程 | ActorFramework的抽象消息和接口
文章出處:【微信號:華穗科技,微信公眾號:華穗科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論