為什麼使用工廠模式

2021-10-01 16:02:17 字數 781 閱讀 6316

非原創,只是搬運。位址

1.工廠模式並不僅僅是用來new出乙個類的物件的。

簡單工廠確實如題主的描述所說,是乙個工廠對應乙個類的關係。假設有**包a和**包b,**包b是**包a的呼叫者,a向b暴露介面inte***cea。

在a的內部結構中,實現了inte***cea的有classa1,classa2,classa3,……classa100。

但是b並不關心這些,因為對於b來說,a的功能只有乙個,就是inte***cea。

這個時候,b想要使用乙個inte***cea的實現,想要new乙個出來,但又不想與**包a中的複雜的構造邏輯耦合,怎麼辦?

只能向**包a中傳遞引數,交給**包a自己選擇到底是那個classa1還是a100被new出來。

而這個對構造過程進行選擇的邏輯,就是工廠。

當然了,我這裡舉的例子是inte***cea,你也可以用abstractclassa之類的。

工廠在這裡面起的作用,就是隱藏了建立過程的複雜度,以配合inte***cea對那一百個子類的複雜度進行隱藏,這樣b只要知道上轉型之後的inte***cea即可,簡單清晰。

對於呼叫者其實不關心被呼叫的實現的關係。降低耦合

2. • 可以使**結構清晰,有效地封裝變化。呼叫者只關心介面就可以了,至於具體的實現,調

用者根本無需關心。即使變更了具體的實現,對呼叫者來說沒有任何影響。

說白了,就是降低耦合度

3. 直接new的話擴充套件性比較差,使用工廠模式的話可以將相關類配置到xml等配置檔案或者資料庫中,這樣可以只增加類而無需修改之前的檔案,確保穩定性、更易維護

工廠模式及什麼時候用工廠模式

factory method是一種建立性模式,它定義了乙個建立物件的介面,但是卻讓子類來決定具體例項化哪乙個類.當乙個類無法預料要建立哪種類的物件或是乙個類需要 由子類來指定建立的物件時我們就需要用到factory method 模式了.簡單說來,factory method可以根據不同的條件產生不...

什麼時候用工廠模式

有個疑問 工廠模式最終不也是new個物件出來麼?呼叫者直接用new好了,何必還要用工廠模式多此一舉呢?想了半天,查了些資料,弄出了點眉目。有時候,構造物件確實只要簡單的new就可以了,但另一些時候,構造物件的過程就比較複雜,比如要有很多條件判斷啊,引數選擇啊之類的,這時候把它們交給呼叫者去做就有些不...

使用工廠模式優化if else

太多的if else 可讀性太差,需要重構易於後期維護。工廠類 author shou title 工廠類 date 2020 4 229 48 public class strategyfactory 內部類 public static class holder 返回的是單例的工程物件 publi...