目錄
一、簡單工廠模式
二、工廠方法模式
三、抽象工廠模式
核心思想:有乙個專門的類來生產其他類的例項,生產的這些例項有乙個共同父類。
舉例:假如有乙個汽車工廠,它既可以生產寶馬汽車,也可以生產奧迪汽車。
**實現:
// 汽車工廠,有生產汽車的方法
public class ca***ctory
}// 汽車介面(獲取汽車的生產資訊)
public inte***ce car
// 生產寶馬汽車
public class bmwcar implements car
}// 生產寶馬汽車
public class audicar implements car
}
測試:
@test
void test()
核心思想:定義乙個專門生產其他類例項的介面,讓子類決定具體生產哪個類的例項。工廠方法模式其實是在簡單工廠上面做了一些增強。
舉例:有乙個汽車工廠,它有兩個子工廠,分別負責生產各自品牌的汽車。
**實現:
// 汽車工廠介面
public inte***ce ca***ctory
// 生產寶馬汽車的工廠
public class bmwca***ctory implements ca***ctory
}// 生產奧迪汽車的工廠
public class audica***ctory implements ca***ctory
}// 汽車介面(獲取汽車的生產資訊),**與簡單工廠相同
// 生產寶馬汽車,**與簡單工廠相同
// 生產寶馬汽車,**與簡單工廠相同
測試:
@test
void test()
核心思想:是一種存在產品系的工廠模式,很容易在特定工廠下擴充套件產品種類。
舉例:有乙個工廠,它有多個子工廠,各個子工廠可以生產不同種類的產品。
**實現:
// 統一的工廠介面
public inte***ce factory
// bmw工廠
public class bmwfactory implements factory
@override
public ship createship()
}// audi工廠
public class audifactory implements factory
@override
public ship createship()
}// 汽車介面(獲取輪船的生產資訊),**與簡單工廠相同
// 寶馬汽車產品,**與簡單工廠相同
// 奧迪汽車產品,**與簡單工廠相同
// 輪船介面(獲取輪船的生產資訊)
public inte***ce ship
// 寶馬輪船產品
public class bmwship implements ship
}// 奧迪的輪船產品
public class audiship implements ship
}
測試:
@test
void test() {
// 寶馬工廠生產汽車和輪船
logger.info(new bmwfactory().createcar().getcarmode());
logger.info(new bmwfactory().createship().getshipmode());
// 奧迪工廠生產汽車和輪船
logger.info(new audifactory().createcar().getcarmode());
logger.info(new audifactory().createship().getshipmode());
小結:(1)增加xx工廠:建立xx工廠,繼承工廠介面,然後建立xx汽車繼承汽車介面,建立xx輪船繼承輪船介面即可。
(2)增加飛機產品:首先建立飛機介面,然後分別建立bmw飛機和audi飛機實現類實現飛機介面。然後再工廠介面中增加建立飛機的方法,在bmw工廠和audi工廠分別實現自家飛機的建立。
設計模式 工廠系列
簡單工廠 特點 工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,客戶端中避免了和具體產品的依賴。缺點 當要繼續增加運算類時,需要在工廠類中增加相應的邏輯。違背了開放 封閉原則。工廠方法 特點 對每乙個產品都有對應的工廠,當增加新產品 在這裡就是增加運算類 時,只需要增加運算類和...
設計模式(3) 工廠設計模式
1.概述 定義乙個用於建立物件的工廠介面,讓工廠子類決定將哪乙個產品類例項化。此模式讓乙個產品類的例項化延遲到工廠子類。2.實現 先定義乙個抽象產品類,包含產品類的公共 再定義乙個抽象工廠類,用乙個方法返回乙個具體的產品類 分別實現具體的產品類,和對應的具體工廠類 3.抽象產品類 internal ...
JAVA系列 設計模式 工廠模式
定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。類圖 這個我們平時接觸的比較多了,直接看 吧。注意要區分和抽象工廠的區別。抽象工廠設計模式 package factory 定義工廠方法所建立的物件的介面。author administrator public inte ce iworkf...