設計模式
—工廠方法
工廠方法與抽象方法
面向介面程式設計可以提高**的靈活性
,可以橫向擴充**
.切忌不能使用面向實現的程式設計,這樣做不便於以後業務的擴充和**的靈活性。
工廠方法
:就是把
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...