C 設計模式學習筆記(一) 之 簡單工廠模式

2021-07-11 13:27:33 字數 2108 閱讀 6533

這是乙個關於記錄我學習(c#)設計模式的系列筆記,主要是記錄一些知識點,和一些個人的理解。

如果真能幫助到大家的話,哪怕是一點點,我也是很開心的啦。

ps:由於本人第一次寫部落格,所以我寫得可能會很亂,有什麼建議和不足的還請大家幫幫我。

我個人認為蛤,學什麼東西嘛,要做到以下幾個點:

我們為什麼要去學它,學它有什麼用?

了解它的概念

了解它的用法

了解它的優缺點

實際應用

因此部落格的大體思路會跟著上面的步驟走,當然,如果您有什麼建議的請幫助幫助我。

我們為什麼要去學它,學它有什麼用?

經過我最近學習設計模式的體會,我得出的答案是這樣的:

1.學習了設計模式,我的**邏輯變強了,**也變得漂亮了。

2.學習設計模式,可以設計出易維護、易擴充套件、易復用、靈活性好的程式。

3.提高了工作效率

ps:目前給我的感覺就是這麼多吧,我相信越深入越能感受帶設計模式帶來的好處吧。

簡單工廠模式的概念

簡單工廠模式屬於類的建立型模式,又叫做靜態工廠方法模式。通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。

ps:沒辦法網上沒找到簡單工廠的結構圖,因此就自己畫了,此圖僅是按自己的理解寫的,錯的話請提個醒,thanks。

簡單工廠的用法

一下是簡單的案例**:
抽象產品類

inte***ce

iproduct

抽象產品類,主要是定義了具體產品的公共介面,所有具體產品都繼承自此類。

具體產品a類

class producta

}

class productb

具體產品類,主要是處理與其它產品不同邏輯(媽蛋,我也不知道是不是這樣,總之我是這麼認為的)。

class productfactory}}

產品工廠類,提供乙個方法來返回使用者指定物件的例項,該方法裡主要處理返回物件例項的邏輯。(我擦,語文太差,不知道怎麼表達)這裡我用了switch來進行邏輯判斷,大夥們也可以用if…else來實現,這個留個你們去做吧。(懶出翔的我,***)

客戶端**

public class client

}

最後的輸出結果:

具體產品a

具體產品b

好了,至此簡單工廠的基本**算是弄好了。

ps:文中所說的方法也可以叫做函式、行為。

簡單工廠的優缺點:

-優點

簡單工廠模式把各個模組分別封裝起來,客戶只需要了解工廠類即可,其它關於類的建立無需知道,讓他們之間降低了耦合度。
-缺點

違背了「開放-封閉原則」,照成了程式不易於擴充套件和重用。
簡單的敘說一下「開放-封閉原則」的概念:

「開放-封閉原則」就是對擴充套件開發,對修改封閉。
好,從簡單工廠出發,假如我們現在要新增產品c,那我們就要新增乙個productc,且還要在productfactory

的switch裡面新增一條判斷語句,這便修改了productfactory類,因此違背了「開放-封閉原則」。

實際應用

由於簡單工廠違背了「開放-封閉」,擴充套件性差,因此一般情況下只能用在一些簡單的程式邏輯裡面。
ps:好了,我的**偏算是已經完畢了。剛剛看了下大神們寫的部落格,真的是乙個天乙個地啊,寫得很好很詳細。不過我是這麼想的,雖然現在我寫得很淺很不好,但是經過我的努力,將來我也會是乙個大神的,哈哈。

C 設計模式學習筆記一 簡單工廠模式

最近在學習設計模式,很多人說 大話設計模式 比較適合入門,就拿來看看。但是,書裡的 實現全是c 的,於是想用c 實現一遍。簡單工廠模式 實現如下 operation.h實現如下 pragma once include operationlib.h include using namespace st...

設計模式學習筆記之簡單工廠模式

所謂簡單工廠模式,即提供建立物件的介面,而具體建立什麼物件,由客戶端決定。比如,我們有ibird這樣乙個抽象類,有chicken和duck這兩個類實現ibird。那麼,如果我們想靈活的建立chicken或ibird,那麼就需要用到簡單工廠模式。factory根據接收到的字串,決定返回的物件。客戶端用...

設計模式學習筆記之簡單工廠模式

解耦,此二字時刻牢記在心。雖然我現在還不能透徹地理解這兩個字的含義,但心中能有個大概的概念。如 復用。簡單工廠模式,就是利用繼承和多型來解耦。以 大話設計模式 中此模式的計算器為例,就是先提出乙個運算父類,具體的運算類繼承自該父類。父類中有計算結果的方法,而子類就負責實現父類中計算結果方法的具體實現...