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邏輯來決定執行時使用哪個具體的實現類。不希望給客戶程式暴露太多的類的內部結構,這樣做可以降低耦合度。優化效能,比如...