深入理解Java的三種工廠模式

2021-09-24 08:44:55 字數 2792 閱讀 7514

一、簡單工廠模式

簡單工廠的定義:提供乙個建立物件例項的功能,而無須關心其具體實現。被建立例項的型別可以是介面、抽象類,也可以是具體的類

實現汽車介面

public

inte***ce

car複製**

賓士類

public

class

benz

implements

car}複製**

寶馬類

public

class

bmwimplements

car}複製**

簡單工廠,既能生產寶馬又能生產賓士

public

class

******factory

else

if (name.equals("benz"))else

}}複製**

測試類

public

class

******factorytest

}複製**

測試結果

bmw複製**
根據簡單工廠的定義,使用者只要產品而不在乎產品如何生產,看起來好像很完美的樣子。但大家想想,這個世界存在什麼都生產的工廠嗎?

顯然是不存在的,每乙個汽車品牌都有自己的生產工廠,都有自己生產技術。對映到spring框架中,我們有很多很多種的bean需要生產,如果只依靠乙個簡單工廠來實現,那麼我們得在工廠類中巢狀多少個if..else if啊?

而且我們在**中生產一輛汽車只是new一下就出來了,但實際操作中卻不知道需要進行多少操作,載入、註冊等操作都將體現在工廠類中,那麼這個類就會變得紊亂,管理起來也很不方便,所以說每個品牌應該有自己的生產類。

因為專一,所以專業嘛,這個時候工廠方法就出現了。

二、工廠方法

工廠介面

//定義乙個工廠介面,功能就是生產汽車

public

inte***ce

factory

複製**

賓士工廠

public

class

benzfactory

implements

factory

}複製**

寶馬工廠

public

class

bmwfactory

implements

factory

}複製**

測試類

public

class

factorytest

}複製**

測試結果

bmw

benz複製**

根據上述**可以看出,不同品牌的汽車是由不同的工廠生產的,貌似又是很完美的。但大家看一下測試類,當乙個人想要去買一輛寶馬汽車的時候(假設沒有銷售商),那麼他就要去找寶馬工廠給他生產一輛,過幾天又想要買一輛賓士汽車的時候,又得跑到賓士工廠請人生產,這無疑就增加了使用者的操作複雜性。所以有沒有一種方便使用者操作的方法呢?這個時候抽象工廠模式就出現了。

三、抽象工廠

抽象工廠

public

abstract

class

abstractfactory

else

if("benz".equalsignorecase(name))else

if("audi".equalsignorecase(name))else

}}複製**

預設工廠

public

class

defaultfactory

extends

abstractfactory

}複製**

寶馬工廠

public

class

bmwfactory

extends

abstractfactory

}複製**

賓士工廠

public

class

benzfactory

extends

abstractfactory

}複製**

測試類

public

class

abstractfactorytest

}複製**

測試結果

benz複製**
根據上述**可以看出,使用者需要一輛汽車,只需要去找預設的工廠提出自己的需求(傳入引數),便能得到自己想要產品,而不用根據產品去尋找不同的生產工廠,方便使用者操作。

注:對於設計模式,有些人嗤之以鼻,有些人敬若神明,但我是認可的。

按我粗淺的理解,設計模式的經典之處,就在於解決了編寫**的人和呼叫**的人雙方的痛楚,不同的設計模式也只適用於不同的場景。至於用或者不用,如何使用,那就需要各位看官著重考慮了。

但為了使用而使用是不應該的,細微之處,只有留給大家慢慢品味了。

深入理解Java的三種工廠模式

一 簡單工廠模式 簡單工廠的定義 提供乙個建立物件例項的功能,而無須關心其具體實現。被建立例項的型別可以是介面 抽象類,也可以是具體的類 實現汽車介面 public inte ce car 賓士類 public class benz implements car 寶馬類 public class b...

Java三種工廠設計模式

乙個栗子 我喜歡吃麵條,抽象 乙個麵條基類 介面也可以 這是產品的抽象類。public abstract class inoodles 程式設計師加班必備也要吃泡麵 具體的產品類 public class paonoodles extends inoodles還有我最愛吃的家鄉的幹扣面 具體的產品類...

java設計模式 三種工廠模式

工廠模式提供建立物件的介面。工廠模式分為三類 簡單工廠模式 factory 工廠方法模式 factory method 和抽象工廠模式 abstract factory gof在 設計模式 中將工廠模式分為兩類 工廠方法模式 factory method 和抽象工廠模式 abstract facto...