OOP設計模式在路上(一) 簡單工廠模式

2022-07-12 13:54:29 字數 1490 閱讀 9281

前言

目前以labview為主要開發工具,熟悉常規開發框架(佇列+狀態機),個人用得比較多也感覺比較好用和強大的(jki,amc),也用它們開發過一些測試平台,但感覺到了乙個瓶頸期,想尋求突破,提公升labview的程式設計水平和思想,所以自己開始學習lvoop,寫此博文,一為自己知識的總結和思考消化,二是希望能為有同樣困惑的小夥伴帶來一點啟發。

oop設計模式學習書籍選用了程杰的《大話設計模式》,個人感覺還不錯,挺適合我這種新手入門的,所以書中的內容在自己理解後會用labview實現並分享出來,如有錯誤之處,還請大神指點一二。

簡單工廠模式

所謂工廠模式,我的理解是,只需向工廠提供乙個你想要的「產品標識」,工廠就可以生產出你想要的產品。也就是說,我們將容易變化的地方放到客戶端,在客戶端選擇例項化誰,這個過程我認為就是工廠生產的過程。用計算器的例子來說,我們可以將不同的運算方法(+, -, *, /等)看成是產品,當我們在介面中觸發這幾個事件時,相當於是向工廠中傳入了產品標識,從而可以得到我們想要的產品。

例如,當前需求實現加、減、乘、除四個運算的功能,來看labview的實現過程:

此專案仔細思考後,可以發現需求可變的地方很可能是需要我不斷的去增加新的運算方法(比如今天新增乙個平方運算,明天再新增乙個開方運算,等等),那就可以考慮對變化的地方進行抽象,我們建立乙個抽象的運算類,然後按照需求去新增具體的運算類去繼承抽象的父類,如下圖所示:

運算的過程都是一樣的,提供兩個引數,然後計算得到結果,只是演算法不一樣而已。那便可以在抽象類中定義兩個私有資料(num1,num2),建立訪問器對其進行讀寫操作,如下圖所示。

接著再建立乙個動態抽象方法(get result),獲取計算的結果,抽象方法在具體的子類中實現。

然後根據需求建立四個具體的運算類,並重新get result方法,對應(+,-,*,/)的具體實現,如下圖所示。

最後在建立乙個工廠類,通過工廠便可按客戶端需求例項指定物件,完成相應的運算操作。

當需求傳送變化(如新增乙個開方運算),只需新增乙個開方運算類,在工廠類的product方法中新增新的「產品生產過程」,然後再新增新的事件觸發即可,如下圖所示:

工廠設計模式一 簡單工廠模式

工廠設計模式實現了建立者和呼叫者的分離。類別 1.簡單工廠模式 2.工廠方法模式 3.抽象工廠模式 遵循的設計原則 1.ocp 開閉原則,open closed principle 乙個軟體的實體應當那個對擴充套件開放,對修改關閉 2.dip 依賴倒置原則,dependence inversion ...

工廠設計模式(一) 簡單工廠模式

工廠設計模式可分為 簡單工廠模式 工廠方法模式 抽象工廠模式 第一篇我們來聊聊 理解 假設某些例項具有相同的方法,可以根據引數的不同返回不同的例項,被建立的例項通常都具有共同的父類,那麼可以考慮使用簡單設計模式來實現。例如可以實用簡單工廠模式設計乙個可以建立不同幾何形狀 如圓形 方形和三角形等 的繪...

設計模式 一 工廠模式 簡單工廠

以前總覺得設計模式純屬扯淡,浪費精力,10 能搞定的事情非要寫那麼多的介面或者實現類.為什麼要用設計模式,開發有乙個重要的原則 對修改關閉,對擴充套件開放.因為如果把 全部都雜糅到乙個類中,第一 復用性太差,擴充套件性不強.第二,修改起來一改巨改,改動即意味著要增加測試人員工作量,且引入修改bug如...