在物件導向程式中,我們經常看到一種模式就是簡單工廠模式(****** factory pattern)。也許你也沒意識到原來你一直在使用簡單工廠模式,沒關係,很多時候我們往往只需要使用就可以了。
簡單工廠模式根據提供給它的資料,返回幾個可能類中的乙個類的例項。通常它返回的類都有乙個共同的父類和共同的方法,但每個方法執行的任務不同,而且根據不同的資料進行了優化。簡單工廠模式實際上不屬於23個gof模式,但它可以作為學習工廠方法模式的乙個引導。
//兩個派生類繼承了namer。並且兩個類的建構函式都將name分成兩部分。並且約定,最後乙個空格後面所有的內容都屬於frname。在子類1當中,分割符是空格,在子類2當中,分隔符是逗號。父類public
class
namer
//返回lname
public
string
getlname()
}
//這兩種情況下,我們將分拆的name儲存在基類namer中的保護變數lname和frname裡。子類1
public
class
firstlast : namer
else
}}//
子類2public
class
lastfirst : namer
else}}
類已經準備好了,下面就需要構造乙個簡單工廠。工廠做的事情很簡單,當檢測到name裡面有逗號時,返回乙個lastfirst物件,否則返回firstlast物件。下面是**示例:
//假設乙個輸入文字要求輸入姓名,響應button click事件之後將姓和名分別輸入在對於的文字框。下面是**示例:簡單工廠
public
class
namefactory
//根據判斷返回不同的類
public namer getname(string
name)
else}}
//在使用的時候,我們不需要知道使用的是哪乙個派生類,工廠會為我們做出選擇。使用工廠
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 ...