前言 目前以LabVIEW為主要開發工具,熟悉常規開發框架(隊列+狀態機),個人用得比較多也感覺比較好用和強大的(JKI,AMC),也用它們開發過一些測試平臺,但感覺到了一個瓶頸期,想尋求突破,提升LabVIEW的編程水平和思想,所以自己開始學習LVOOP,寫此博文,一為自己知識的總結和思考消化,二 ...
前言
目前以LabVIEW為主要開發工具,熟悉常規開發框架(隊列+狀態機),個人用得比較多也感覺比較好用和強大的(JKI,AMC),也用它們開發過一些測試平臺,但感覺到了一個瓶頸期,想尋求突破,提升LabVIEW的編程水平和思想,所以自己開始學習LVOOP,寫此博文,一為自己知識的總結和思考消化,二是希望能為有同樣困惑的小伙伴帶來一點啟發。
OOP設計模式學習書籍選用了程傑的《大話設計模式》,個人感覺還不錯,挺適合我這種新手入門的,所以書中的內容在自己理解後會用Labview實現並分享出來,如有錯誤之處,還請大神指點一二。
簡單工廠模式
所謂工廠模式,我的理解是,只需向工廠提供一個你想要的“產品標識”,工廠就可以生產出你想要的產品。也就是說,我們將容易變化的地方放到客戶端,在客戶端選擇實例化誰,這個過程我認為就是工廠生產的過程。用計算器的例子來說,我們可以將不同的運算方法(+, -, *, /等)看成是產品,當我們在界面中觸發這幾個事件時,相當於是向工廠中傳入了產品標識,從而可以得到我們想要的產品。
例如,當前需求實現加、減、乘、除四個運算的功能,來看LabVIEW的實現過程:
此項目仔細思考後,可以發現需求可變的地方很可能是需要我不斷的去增加新的運算方法(比如今天添加一個平方運算,明天再添加一個開方運算,等等),那就可以考慮對變化的地方進行抽象,我們創建一個抽象的運算類,然後按照需求去新增具體的運算類去繼承抽象的父類,如下圖所示:
運算的過程都是一樣的,提供兩個參數,然後計算得到結果,只是演算法不一樣而已。那便可以在抽象類中定義兩個私有數據(num1,num2),創建訪問器對其進行讀寫操作,如下圖所示。
接著再創建一個動態抽象方法(Get Result),獲取計算的結果,抽象方法在具體的子類中實現。
然後根據需求創建四個具體的運算類,並重新Get Result方法,對應(+,-,*,/)的具體實現,如下圖所示。
最後在創建一個工廠類,通過工廠便可按客戶端需求實例指定對象,完成相應的運算操作。
當需求發送變化(如新增一個開方運算),只需新增一個開方運算類,在工廠類的product方法中添加新的“產品生產過程”,然後再添加新的事件觸發即可,如下圖所示:
從這個簡單的例子便可感受到OOP的“魔力”,方便擴展,維護等。源碼參考:鏈接:https://pan.baidu.com/s/13bY5QVC5ajJtllpmj7cNLA 密碼:1l0o