在面向對象程式中,我們經常看到一種模式就是簡單工廠模式(simple factory pattern)。也許你也沒意識到原來你一直在使用簡單工廠模式,沒關系,很多時候我們往往隻需要使用就可以了。
簡單工廠模式根據提供給它的資料,傳回幾個可能類中的一個類的執行個體。通常它傳回的類都有一個共同的父類和共同的方法,但每個方法執行的任務不同,而且根據不同的資料進行了優化。簡單工廠模式實際上不屬于23個gof模式,但它可以作為學習工廠方法模式的一個引導。
兩個派生類繼承了namer。并且兩個類的構造函數都将name分成兩部分。并且約定,最後一個空格後面所有的内容都屬于frname。在子類1當中,分割符是空格,在子類2當中,分隔符是逗号。
這兩種情況下,我們将分拆的name儲存在基類namer中的保護變量lname和frname裡。
類已經準備好了,下面就需要構造一個簡單工廠。工廠做的事情很簡單,當檢測到name裡面有逗号時,傳回一個lastfirst對象,否則傳回firstlast對象。下面是代碼示例:
假設一個輸入文本要求輸入姓名,響應button click事件之後将姓和名分别輸入在對于的文本框。下面是代碼示例:
在使用的時候,我們不需要知道使用的是哪一個派生類,工廠會為我們做出選擇。

簡單工廠能夠傳回具有相同方法的類的執行個體,他們可以是不同的派生子類的執行個體,也可以是實踐上毫無關系僅僅是共享了相同接口的類。不管是哪一種形式,這些執行個體中的方法必須是相同的,并且能夠被交替使用。
學習,從簡單開始。
所有代碼
簡單工廠
參考資料:《c#設計模式》