Java 設計模式 簡單工廠 工廠模式 抽象工廠

2021-09-17 20:14:25 字數 2488 閱讀 4716

工廠模式,實際上也會根據業務情景不同會有不同的實現方式。一般分為3種。簡單工廠,工廠模式和抽象工廠。顧名思義,這三種從簡單到抽象,名稱越來越高大上,實現方式肯定是越來越複雜

結論1:三種工廠的實現越來越複雜

public class factory

public iproduct getproduct()

}}// 產品a

class producta implements iproduct

//產品b

class productb implements iproduct

//產品介面

public inte***ce iproduct

簡單工廠的問題就在於swich case(或者if else)。每當新增一種產品時,你都需要去維護工廠中的判斷語句,造成該工廠類不斷增長,各種判斷擠在一起,給擴充套件和維護帶來麻煩。產品和工廠沒有實現完全解耦,繫結在一起

結論2:簡單工廠通過構造時傳入的標識來生產產品,不同產品都在同乙個工廠中生產,這種判斷會隨著產品的增加而增加,給擴充套件和維護帶來麻煩

// 工廠介面

inte***ce ifactory

// a工廠類

class factorya implements ifactory

public iproduct getproduct() //a工廠生產a產品

}//b工廠類

class factoryb implements ifactory

public iproduct getproduct() //b工廠生產b產品

}//產品介面

inte***ce iproduct

//產品a

class producta implements iproduct

//產品b

class productb implements iproduct

在工廠模式中,已經將工廠類分開,不再將所有產品在同一工廠中生產,解決了簡單工廠中不斷增加的switch case的問題。如再新增乙個c產品,那麼只需寫乙個c工廠和c產品,在呼叫時用c工廠生產c產品即可,a和b工廠和產品完全不受影響

結論3:工廠模式無法解決產品族和產品等級結構的問題

實現不同的產品族,並且實現產品等級結構

// 工廠介面,即抽象工廠

inte***ce ifactory

// 三星的工廠,生產三星的產品族

class samsungfactory implements ifactory

public ifridge createfridge()

}// 格力的工廠,生產格力的產品族

class greefactry implements ifactory

public ifridge createfridge()

}// 冰箱產品介面

inte***ce ifridge

// 空調介面

inte***ce iaircondition

// 三星的冰箱

public class samsungfridge implements ifridge

// 格力的冰箱

public class greefridge : ifridge

// 三星的空調

public class samsungaircondition implements iaircondition

// 格力的空調

public class greeaircondition implements iaircondition

在工廠模式中,乙個工廠生產乙個產品,所有的具體產品是由同乙個抽象產品派生的,不存在產品等級結構和產品族的概念;而在抽象工廠中,同乙個等級的產品是派生於乙個抽象產品(即產品介面),乙個抽象工廠派生不同的具體工廠,每個具體工廠生產自己的產品族(包含不同產品等級)

結論4:工廠模式中,乙個工廠生產乙個產品,所有產品派生於同乙個抽象產品(或產品介面);而抽象工廠模式中,乙個工廠生產多個產品,它們是乙個產品族,不同的產品族的產品派生於不同的抽象產品(或產品介面)

從功能上說,完全可以,甚至可以用介面來定義行為,用抽象類來抽象屬性。抽象類更加偏向於屬性的抽象,而用介面更加偏向行為的規範與統一。使用介面有更好的可擴充套件性和可維護性,更加靈活實現鬆散耦合,所以程式設計原則中有一條是針對介面程式設計而不是針對類程式設計

根據具體業務需求。不要認為簡單工廠是用switch case就覺得一無是處,也不要覺得抽象工廠比較高大上就到處套。我們使用設計模式是為了解決問題而不是炫技,所以根據三種工廠模式的特質,以及對未來擴充套件的預期,來確定使用哪種工廠模式

乙個旅遊產品的b2b**,根據不同型別的業務形態,產品也是不同的,有國內跟團,出境跟團,國內自由行,出境自由行,郵輪五種產品,並且後面可能還會有門票,酒店,機票等等產品,其中有些聯絡也有些區別

設計模式 工廠模式(簡單工廠模式和方法工廠模式)

一 簡單工廠模式 簡單工廠模式概述 又叫靜態工廠方法模式,它定義乙個具體的工廠類負責建立一些類的例項 優點 客戶端不需要在負責物件的建立,從而明確了各個類的職責 缺點 這個靜態工廠類負責所有物件的建立,如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護 動物類 ...

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

這裡講三種模式放在一起說明,是因為三種模式關聯性很強 抽象工廠模式簡單化以後就是工廠方法模式,工廠方法模式再簡單化就是簡單工廠模式 簡單工廠模式並沒有被列入到gof的設計模式中 public class factory 簡單工廠類,實現建立產品物件 class factory return prod...

Java設計模式 工廠模式(1)簡單工廠模式

將例項化新物件的過程 即new語句 從原有 中分離出來,單獨封裝在乙個類中,並將例項化物件的結果作為返回值返回,這個用來處理建立物件細節的類稱為 工廠 factory 而建立的物件為工廠的產品 product 當需要建立物件時,通過工廠類進行,還可以通過建構函式傳入乙個引數,根據引數選擇具體例項化哪...