工廠模式:簡單的說是一種類的建立模式,適用於在建立多個複雜物件的時候(在不同情況下建立不同物件)
工廠模式的形態
工廠模式主要用一下幾種形態:
1.簡單工廠(****** factory):在工廠類定義建立不同物件例項的方法,在需要使用物件的地方,通過建立工廠並給出需要的物件名稱來獲取物件例項
2.抽象工廠(abstract factory):工廠的工廠
簡單工廠(****** factory)
又叫靜態工廠,下面我們來看乙個具體的例子:
假設一家汽車工廠,有生產bmw寶馬汽車的, 有生產qq汽車的
首先我們先為所有產品定義乙個共同的汽車介面:
public inte***ce car
下面工廠生產的bmw和qq 都必須實現這個介面
public class bmw implements car
}public class qq implements car
}
接下寫乙個工廠類,他主要負責生產以上的產品
public class factorycar
if("bmw".equals(carname))else if("qq".equals(carname))
return null;
}}
寫乙個測試類:
public class test
}console 輸出 : bmw在跑
由上面的**可以看出,簡單工廠的核心就是乙個
factorycar類,他擁有必要的邏輯判斷能力和所有產品的建立權利,我們只需要向把定單給他,就能得到我們想要的產品。這使用起來似乎非常方便。
但,實際上,這個
factorycar
有很多的侷限。首先,我們每次想要增加一種新產品的時候,都必須修改
factorycar
的原**。其次,當我們擁有很多很多產品的時候,而且產品之間又存在複雜的層次關係的時候,這個類必須擁有複雜的邏輯判斷能力,其**量也將不斷地激增,這對以後的維護簡直就是恐怖兩個字...
還有就是,整個系統都嚴重依賴
factorycar
類,只要
factorycar
類一出問題,系統就進入不能工作的狀態,這也是最為致命的一點....
所以出現了抽象工廠
抽象工廠:意的意圖在於建立一系列互相關聯或互相依賴的物件。<
工廠方法用來建立乙個產品,它沒有分類的概念,而抽象工廠則用於建立一系列產品,所以產品分類成了抽象工廠的重點,
我們繼續用上面的例子來說明: 加上乙個顏色類
顏色有紅色類和綠色類public inte***ce colors
public inte***ce car
public class blue implements colors
}public class red implements colors
}
抽象工廠
public abstract class abstractfactory
讓汽車工廠和顏色工廠都繼承抽象工廠
public class factorycolor extends abstractfactory
@override
colors getcolor(string colorname)
if ("red".equals(colorname)) else if ("blue".equals(colorname))
return null; }}
public class factorycar extends abstractfactory
if("bmw".equals(carname))else if("qq".equals(carname))
return null;
}@override
colors getcolor(string colorname)
}
編寫 factorybuilder
public class factorybuilder
if ("car".equals(factoryname)) else if ("colors".equals(factoryname))
return null;
}}
編寫測試類
public class test
}執行結果:
紅色的bmw在跑
這樣,抽象工廠就編寫完成了。從上面可以看出,要先對建立的物件進行系統的分類,這點很重要,好的產品分類規則能為具體工廠類的選擇呼叫和以後的擴充套件提供清晰的思路.
Java設計模式 抽象工廠模式(factory)
目錄目的 應用例項 提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。工廠模式是最常用的設計模式之一。這種型別的設計模式輸出建立型模式,提供了一種建立物件的最佳方式。在工廠模式中建立物件是通過使用乙個共同 的介面來指向新建立的物件。乙個框架或者系統要由多個子工具系列的乙個工具來配置...
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...
c 設計模式 之 工廠模式之 工廠模式
1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...