C 簡單工廠模式 初遇GoF設計模式

2021-09-07 21:18:22 字數 1929 閱讀 2508

在物件導向程式中,我們經常看到一種模式就是簡單工廠模式(****** factory pattern)。也許你也沒意識到原來你一直在使用簡單工廠模式,沒關係,很多時候我們往往只需要使用就可以了。

簡單工廠模式根據提供給它的資料,返回幾個可能類中的乙個類的例項。通常它返回的類都有乙個共同的父類和共同的方法,但每個方法執行的任務不同,而且根據不同的資料進行了優化。簡單工廠模式實際上不屬於23個gof模式,但它可以作為學習工廠方法模式的乙個引導。

//

父類public

class

namer

//返回lname

public

string

getlname()

}

兩個派生類繼承了namer。並且兩個類的建構函式都將name分成兩部分。並且約定,最後乙個空格後面所有的內容都屬於frname。在子類1當中,分割符是空格,在子類2當中,分隔符是逗號。

//

子類1

public

class

firstlast : namer

else

}}//

子類2public

class

lastfirst : namer

else}}

這兩種情況下,我們將分拆的name儲存在基類namer中的保護變數lname和frname裡。

類已經準備好了,下面就需要構造乙個簡單工廠。工廠做的事情很簡單,當檢測到name裡面有逗號時,返回乙個lastfirst物件,否則返回firstlast物件。下面是**示例:

//

簡單工廠

public

class

namefactory

//根據判斷返回不同的類

public namer getname(string

name)

else}}

假設乙個輸入文字要求輸入姓名,響應button click事件之後將姓和名分別輸入在對於的文字框。下面是**示例:

//

使用工廠

private

void btnok_click(object

sender,system.eventargs e)

在使用的時候,我們不需要知道使用的是哪乙個派生類,工廠會為我們做出選擇。

簡單工廠能夠返回具有相同方法的類的例項,他們可以是不同的派生子類的例項,也可以是實踐上毫無關係僅僅是共享了相同介面的類。不管是哪一種形式,這些例項中的方法必須是相同的,並且能夠被交替使用。

學習,從簡單開始。

所有**

//

父類public

class

namer

//返回lname

public

string

getlname()}//

子類1

public

class

firstlast : namer

else

}}//

子類2public

class

lastfirst : namer

else

}}//

簡單工廠

public

class

namefactory

//根據判斷返回不同的類

public namer getname(string

name)

else

}}//

使用工廠

private

void btnok_click(object

sender,system.eventargs e)

C 簡單工廠模式 初遇GoF設計模式

在物件導向程式中,我們經常看到一種模式就是簡單工廠模式 factory pattern 也許你也沒意識到原來你一直在使用簡單工廠模式,沒關係,很多時候我們往往只需要使用就可以了。簡單工廠模式根據提供給它的資料,返回幾個可能類中的乙個類的例項。通常它返回的類都有乙個共同的父類和共同的方法,但每個方法執...

初遇設計模式

今天開始學設計模式了。用的是程杰老師寫的 大話設計模式 在網上搜了一下這位老師的資料,簡單的了解一下這位大牛。那麼什麼是設計模式?design pattern 設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易...

初涉設計模式 簡單工廠模式

下面我談談簡單工廠模式 有的時候,我們不希望客戶自己new以個產品,而是希望客戶傳入乙個產品的名字來得到他們想要的產品,下面用乙個示意程式來說明 inte ce car class benz implements car public void stop class ford implements ...