設計模式系列 3 工廠模式

2021-10-22 08:38:29 字數 2698 閱讀 3710

目錄

一、簡單工廠模式

二、工廠方法模式

三、抽象工廠模式

核心思想:有乙個專門的類來生產其他類的例項,生產的這些例項有乙個共同父類。

舉例:假如有乙個汽車工廠,它既可以生產寶馬汽車,也可以生產奧迪汽車。

**實現

// 汽車工廠,有生產汽車的方法

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...