設計模式 工廠方法

2021-04-22 18:41:18 字數 2227 閱讀 4165

設計模式

—工廠方法

工廠方法與抽象方法

面向介面程式設計可以提高**的靈活性

,可以橫向擴充**

.切忌不能使用面向實現的程式設計,這樣做不便於以後業務的擴充和**的靈活性。

工廠方法

:就是把

new class

的過程交給

factory來做.

構造類的細節不需要我們知道。 比如

:構造乙個

list

我們可以這樣寫

:public class listfactoryelse if(type.equals("2"))else if(type.equals("3")) }

}抽象方法

若你構造乙個類是比較複雜的話

,就必須是抽象工廠了

.比如你構造乙個產品

,這個產品可能有好多種,但他們的介面是相同的。如網絡卡類

,顯示卡類等

.顯示卡類和網絡卡類都有自己的記憶體和

cpu。所以在構造這系列類的時候就需要考慮。首先要抽象乙個產品類

,在抽象產品的

cpu和記憶體

.具體的產品和

cpu,記憶體可以用具體的類來實現。 //

構造產品介面

publicinte***ceproduct

//構造產品的乙個部件

cpu介面

publicinte***cecpu

//構造產品的乙個部件

ram介面

publicinte***ceram

//產品和部件的實現

publicclassmacramimplementsram

publicvoidwriter(string message) }

publicclasschipram

implementsram

publicvoidwriter(string message) }

publicclassmaccpuimplementscpu

publicvoidwriter(string message) }

publicclasschipcpuimplementscpu

publicvoidwriter(string message) }

publicclassmacproductimplementsproduct

publicram getram() }

//產品工廠類

publicclassproductfactory

publicstaticproduct getcpuproduct() }

publicclasschipproduct

implementsproduct

publicram getram() }

//測試類

publicclasstestfactory }

當你需要增加新的產品的時候

,直接橫向擴充套件類就可以了,實現

ram介面,實現

cpu介面,實現

product介面,

這樣乙個新產品就出來了

,**只需要修改工廠方法就可以了

.比如我們需要乙個顯示卡產品

videoproduct

,它也由

cpu和

ram組成

.所以我們就需要做類的橫向擴充套件

,videoram,videocpu,videoproduct

。最後工廠方法要變一下

,增加乙個新的產品建立方法

getvideoproduct()

,外圍使用

productfactory

去構造新的產品類的時候,基本的**框架是不需要變得。對**的擴充套件性

,重用性得到了很大的提高。此工廠方法的缺點

,就是每增加乙個產品

,就需要在工廠方法裡增加乙個方法。需要修改工廠方法類。考慮是否可以使用類的動態載入。

設計模式 簡單工廠 工廠方法 抽象工廠方法模式

簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...

設計模式 工廠方法

簡單工廠針對擴充套件時需要修改 違反了ocp 開閉原則 而工廠方法模式在擴充套件時,更滿足ocp。當然比較簡單工廠模式,工廠方法模式有一組實現了相同介面的工廠類,而簡單工廠模式就只有乙個工廠類。和簡單工廠方法一樣,還是以生成汽車為例子。定義要生成的物件的公共介面 public inte ce car...

設計模式 工廠方法

工廠角色 package designpattern.creation.factorymethod public class factorya package designpattern.creation.factorymethod public class factoryb 產品角色 packag...