設計模式 工廠模式理解

2021-10-21 13:45:48 字數 1587 閱讀 5467

工廠模式在建立物件時不會對客戶端暴露建立邏輯,並且是通過使用乙個共同的介面來指向新建立的物件。在物件導向設計中工廠模式是程式設計的首先模式。為了深入理解這個概念,首先講一下「工廠」的概念。工廠是可以大量重複生產相同產品的場所。對於工廠來講,生產一件產品和生產一萬件產品在技術和管理層面上不應該有本質差別。工廠生產的前提是原料,工人是充足的。在現實生活中,乙個日產量100件和10000件的工廠在技術和管理細節上可能還存在較大差別,但是在計算機軟體中沒有任何差別。微軟賣出乙個windows軟體和賣出一萬個windows軟體對技術開發來講沒有任何差別。在物件導向設計裡,軟體工程師要假定記憶體空間是充足的,只要抽象出乙個類,建立1個物件和100個物件在實現方法上是一樣的。這個和工程生產的模式很相似,所以叫「工廠模式」。

以生產汽車電子控制器(ecu)為例說明,假設某個初創公司一開始只研發出一款針對乙個客戶a的四缸發動機控制器(ecu-i4),那麼它只要把這一款ecu的生產工序拆解出來,按照一套方法生產就夠了,這就叫簡單工廠模式

過一段時間,又來了新的客戶b他需要六缸發動機控制器(ecu-i6),那麼需要重新建立乙個工廠嗎?當然可以建立,可是如果開了這個先例。後面又有八缸,十二缸的需求還能這麼辦嗎?稍微想一下就會覺得這個方法很快就會耗盡當前的工廠資源,公司規模的發展很快停滯。那就再進一步,把四缸發動機控制器的生產工序再抽象,哪些和六缸有關,哪些和六缸無關。公司只要再開發一套六缸的工序,在組裝時分兩條線,就相當於有了乙個新的六缸的ecu工廠,不過它實際上和四缸ecu同處乙個工廠,但是在管理上可以虛擬成兩個工廠,這叫工廠方法模式。

又過了一段時間,六缸發動機控制器(ecu-i6)的客戶說,我要在**車上降低成本,需要一款塑料外殼的ecu-i6-2,原來的金屬外殼ecu-i6也繼續維持供貨。這在工廠的生產流程上沒有任何變化,只是產品組裝的零件發生變化。只需要對產品再做一層抽象,工廠生產的是抽象產品,最終的具體產品由客戶選擇的組裝零件來決定,這就叫抽象工廠模式。

1. 工廠模式是物件導向開發的必須方法。因為物件不可能只有乙個,會有很多個。

2. 當客戶對產品的功能需要有差異時,就要考慮用工廠方法模式元件虛擬工廠,生產不同的產品。

3. 當客戶對產品的組裝有個性化需求時,就要繼續對產品抽象生產虛擬產品。

總之,這些方法是循序漸進式的。

autosar軟體開發的方**和軟體架構本身就抽象工廠模式在汽車電子軟體中的應用。把bcm,vcu,tcu,mcu等所有ecu的共性抽象出來,成為抽象ecu,元件大量的虛擬工廠,但只在少量的工廠內生產。

把相同產品的不同客戶的的個性化需求抽象出來,通過簡單配置,組裝成效能豐富的具體產品,快速實現客戶需求。

設計模式的理解 工廠模式

工廠模式 將物件的建立從業務邏輯中分離,可以做到統一建立,而不是分散在各個業務模組中建立,需要修改時可以統一控制。業務邏輯中去除了物件的建立,更新清清晰,對介面程式設計時,也可以通過工廠方便替換物件,對業務邏輯無影響。工廠產生物件時,可以增加一些處理如 裝飾等等。簡單工廠模式 通過乙個方法來建立不同...

理解設計模式 抽象工廠模式

一 簡單工廠模式 定義 專門定義乙個類用來負責建立其他類的例項,被建立的類通常具有共同的父類 沒有也行 產品類 public inte ce product 繼承產品的子類a產品 public class producta implements product 繼承產品的子類b產品 public c...

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...