《設計模式之禪》學習 工廠方法模式

2021-08-10 21:20:26 字數 2182 閱讀 8055

工廠方法模式

工廠方法模式的定義:define an inte***ce for creating an object,but let subclasses decide which class to instantiate.factory method lets a class defer instantiation to subclasses.(定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。)

在工廠方法模式中,抽象產品類product負責定義產品的共性,實現對事物最抽象的定義;creator為抽象建立類,也就是抽象工廠,具體如何建立產品類是由具體的實現工廠concretecreator完成的。

工廠方法模式的使用

下面用工廠方法模式來模擬女媧造人的故事

我們定義的每個人種都有兩個方法:getcolor(獲得人的**顏色)和talk(交談)。

//   human是對人類的總稱 

public

inte***ce human

//   黃色人種  

public

class

yellowhuman

implements

human

public

void

talk()

}

//     白色人種  

public

class

whitehuman

implements

human

public

void

talk()

}

//     黑色人種   

public

class

blackhuman

implements

human

public

void

talk()

}

//   女媧造人類  

public

abstract

class abstracthumanfactory

//    人類建立工廠實現類

public

class

humanfactory

extends

abstracthumanfactory catch (exception e)

return (t) human;}}

//    女媧造人類  

public class nvwaclient

}

執行結果如圖所示,這就是工廠方法模式。

}}humanfactory類僅有兩個地方發生變化:去掉繼承抽象類,並在createhuman前增加static

關鍵字;工廠類發生變化,也同時引起了呼叫者nvwa的變化,**如下:

public class nvwa 

}

執行結果沒有發生變化,但是我們的類圖變簡單了,而且呼叫者也比較簡單,該模式是

工廠方法模式的弱化,因為簡單,所以稱為簡單工廠模式(****** factory pattern),也叫做

靜態工廠模式。在實際專案中,採用該方法的案例還是比較多的,其缺點是工廠類的擴充套件比

較困難,不符合開閉原則,但它仍然是乙個非常實用的設計模式。

設計模式學習之 工廠方法模式

1.定義乙個抽象產品介面 車 抽象產品類 public inte ce icar 2.定義多個具體產品類 寶馬車 具體產品類 public class bmwcar implements icar 賓士車 具體產品類 public class benzcar implements icar 3.定義...

設計模式學習之工廠方法模式

uml結構類圖的常用畫法 簡單工廠 設計模式學習之外觀模式 設計模式學習之介面卡模式 設計模式學習之單例模式 demo傳送門 案例 有加減乘除四中運算方法以供外界使用,未來可能會加入別的演算法模式 1.認識工廠方法 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,使乙個類的例項化延遲到其子類。...

設計模式 工廠模式之工廠方法模式

工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...