java設計模式 工廠模式

2021-09-09 05:39:31 字數 2998 閱讀 9863

1.模式描述

提供乙個用於建立物件的介面(工廠介面),讓其實現類(工廠實現類)決定例項化哪乙個類(產品類),並且由該實現類建立對應類的例項。

2.模式作用

可以一定程度上解耦,消費者和產品實現類隔離開,只依賴產品介面(抽象產品),產品實現類如何改動與消費者完全無關。

可以一定程度增加擴充套件性,若增加乙個產品實現,只需要實現產品介面,修改工廠建立產品的方法,消費者可以無感知(若消費者不關心具體產品是什麼的情況)。

可以一定程度增加**的封裝性、可讀性。清楚的**結構,對於消費者來說很少的**量就可以完成很多任務作。

等等。//todo

另外,抽象工廠才是實際意義的工廠模式,工廠方法只是抽象工廠的乙個比較常見的情況。

3.適用場景

消費者不關心它所要建立物件的類(產品類)的時候。

消費者知道它所要建立物件的類(產品類),但不關心如何建立的時候。

等等。//todo

例如:hibernate裡通過sessionfactory建立session、通過**方式生成ws客戶端時,通過工廠構建報文中格式化資料的物件。

4.模式要素

提供乙個產品類的介面。產品類均要實現這個介面(也可以是abstract類,即抽象產品)。

提供乙個工廠類的介面。工廠類均要實現這個介面(即抽象工廠)。

由工廠實現類建立產品類的例項。工廠實現類應有乙個方法,用來例項化產品類。

5.類圖

以上引用自:

6.模式例項**

工廠介面

/**

* 工廠介面

* @classname: imyca***ctory

*/public

inte***ce

imyca***ctory

工廠實現類

/**

* 工廠實現類

* @classname: myca***ctory

*/public

class

myca***ctory

implements

imyca***ctory

else

if(name.

equalsignorecase

("bmw"))

else

if(name.

equalsignorecase

("audi"))

else

ca***ctory.

setcar

(car)

;return ca***ctory;

}}

存放屬性的實體

/**

* 存放屬性的實體

* @classname: car

*/public

class

carpublic

void

setname

(string name)

public string getcolor()

public

void

setcolor

(string color)

}

產品介面

/**

* 產品介面

* @classname: icar

*/public

inte***ce

icar

虛擬產品類

/**

* 虛擬產品類

* @classname: ca***ctory

*/public

abstract

class

ca***ctory

implements

icar

@override

public

void

setcar

(car car)

}

奧迪車

/**

* 奧迪車

* @classname: audicar

*/public

class

audicar

extends

ca***ctory

system.out.

println

("audi->"

+ car.

getname()

+"->"

+ car.

getcolor()

);}}

寶馬車

/**

* 寶馬車

* @classname: bmwcar

*/public

class

bmwcar

extends

ca***ctory

system.out.

println

("bmw->"

+ car.

getname()

+"->"

+ car.

getcolor()

);}}

五菱車

/**

* 五菱車

* @classname: wulingcar

*/public

class

wulingcar

extends

ca***ctory

system.out.

println

("wuling->"

+ car.

getname()

+"->"

+ car.

getcolor()

);}}

測試類

public

class

main

}

輸出

java設計模式 工廠模式

工廠模式 存在的目的 定義乙個用於建立複雜類的物件的介面。使用工廠模式,降低了類與類之間的耦合關係。分為三種實現方式 類之間的繼承結構不同 簡單工廠模式 工廠方法模式 抽象工廠模式。主要涉及的三種類 呼叫工廠的類,工廠類,產品類。先看乙個不適用工廠模式的類組織 class bmw32 class b...

JAVA設計模式 工廠模式

一 簡單工廠。它的缺點很明顯,當需要再新增乙個whitehuman類時,需要在工廠類中修改,則 的耦合性很高。建立需要用工廠new的class public inte ce human public class blackhuman implements human public class yel...

java設計模式 工廠模式

靜態工廠模式 為了建立物件而產生 1 有工廠類,有乙個可以根據需求返回建立的物件的方法 2 工廠類中的產生物件的方法的返回值型別是 父類的型別,產生的物件都是子類物件 3 強調 工廠類中的方法的返回值和返回的物件中存在著向上轉型的關係 public class cloth public class ...