工廠方法模式

2021-06-12 11:59:09 字數 1180 閱讀 3746

工廠方法(factorymethod)模式:是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。也就是說核心工廠類不再負責產品的建立,僅負責具體工廠子類必須實現的介面就行。這樣抽象的好處是顯而易見的,我們不再需要去修改具體工廠的角色了。

例如下面的**:是乙個即將畢業的大學生,以學雷鋒做好事的名義去幫助一位老人:

//雷鋒類

class leifeng

public void wash()

public void buyrice()

}//「學雷鋒的大學生」類,繼承雷鋒

class undergraduate : leifeng

//客戶端**

static void main(string args)

現在如果新增人數,例如共3位同學做這些事,那麼只需要例項化三個「學雷鋒的大學生」物件了:

//客戶端**

static void main(string args)

這時候就有人有異議了,難道只能大學生去學雷鋒做好事嗎?我們中學生也可以盡一己之力的。於是,這時候就不是單單例項化多個物件的問題了。

於是雷鋒工廠就來了。

//雷鋒工廠

inte***ce ifactory

//「學雷鋒的大學生」工廠

class undergraduatefactory : ifactory

}//「學雷鋒的中學生」工廠

class middlestudentfactory : ifactory

}

客戶端呼叫的時候只需要這樣就可以了:

//客戶端**

static void main(string args)

這時候怎麼樣,想換成中學生還不容易嗎?

通過以上的**,我們可以看到,工廠方法克服了簡單工廠違背「開放-封閉原則」的缺點,又保持了封裝物件建立過程的優點,降低了客戶程式與產品物件的耦合。可以說工廠方法模式是簡單工廠模式的進一步抽象和推廣。

可是有乙個問題,當我們每增加乙個產品時,都需要加乙個產品工廠的類,很顯然會增加額外的開發量,那該怎麼辦呢?這又要說到-「反射」了。不過此篇部落格不會細講,在以後的抽象工廠模式中會有詳解。

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...

工廠方法模式(一) 簡單工廠方法模式

ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...