java常用設計模式3 工廠方法模式

2021-08-28 19:45:14 字數 2003 閱讀 6253

1、工廠方法模式定義:定義乙個用於建立物件的介面,讓子類決定例項化哪個類

2、工廠方法模式的使用場景:在任何需要生成複雜物件的地方,都可以使用工廠方法模式。複雜物件適合使用工廠模式,用new就可以完成建立的物件無需使用工廠模式

多工廠方法模式

**示例:

1、定義乙個抽象的產品介面(非必須)

/**

* 抽象的產品介面

*/public

abstract

class

product

2、具體的產品實現類

public

class

producta

extends

product

}public

class

productb

extends

product

}

3、抽象工廠類

/**

* 抽象的工廠介面

*/public

abstract

class

factory

4、具體工廠類

/**

* a產品的工廠

*/public

class

factorya

extends

factory

}/**

* b產品的工廠

*/public

class

factoryb

extends

factory

}

使用:

factory factory =

newfactorya()

; product p = factory.

createproduct()

; p.

productname()

;

這種方式很常見,每個產品都有自己的工廠方法,他們實現了同樣的工廠介面,需要哪個產品就使用哪個工廠,像這種擁有多個工廠的方式稱為多工廠方法模式。

簡單工廠(靜態工廠)模式

當然我們可以有更簡潔的方式,我們可以簡化成乙個工廠,並去掉介面,然後給工廠類傳入乙個引數,並根據引數來決定生產哪個,**修改如下:

去掉介面,傳入乙個類引數,來決定生產哪個產品

/**

* 使用反射來根據引數建立物件

*/public

class

createproductfactory

catch

(exception e)

return

(t) p;

}}

使用:

createproductfactory factory =

newcreateproductfactory()

;//由於去掉了factory,所以需要例項化具體的工廠物件

product p = factory.

createproduct

(producta.

class);

//傳入producta.class則生產a產品

//product p = factory.createproduct(productb.class);//傳入producta.class則生產b產品

p.productname()

;

像這樣的只有乙個工廠的方式稱為簡單工廠模式或靜態工廠模式,它是工廠方法模式的乙個弱化版本。

工廠方法模式是完全符合設計原則的,其降低了物件之間的耦合度,而且,工廠方法模式依賴於抽象的架構,其將例項化的任務交由子類去完成,有非常好的擴充套件性。

另外還有乙個抽象工廠模式,具體沒怎麼用過,就不做介紹啦。

以上就是工廠方法模式的簡單介紹啦(#^ . ^#)

Java設計模式 工廠方法

定義乙個用於建立物件的介面,factory method將乙個類的例項化延遲到了子類。工廠方法模式的功能 工廠方法的主要功能是讓父類在不知道具體實現的情況下,完成自身的功能呼叫,而具體的實現延遲到子類來實現。實現成抽象類 工廠方法的實現中,通常父類會是乙個抽象類,裡面包含建立所需物件的抽象方法,這些...

Java設計模式 工廠方法模式

定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化。factory method 使乙個類的例項化延遲到其子類。package car inte ce public inte ce icar inte ce package car imple import car inte ce.icar in...

Java設計模式 工廠方法模式

工廠方法模式應用背景 客戶類不關心使用哪個具體的類,只關心介面所提供的功能。建立過程比較複雜,例如需要初始化其他關聯的資源類。介面或者抽象類有許多實現類,客戶 需要編寫大量if else邏輯來決定執行時使用哪個具體的實現類。不希望給客戶程式暴露太多的類的內部結構,這樣做可以降低耦合度。優化效能,比如...