設計模式2 工廠模式

2021-10-22 16:39:11 字數 4933 閱讀 2228

工廠模式實現了建立者和呼叫者的分離

工廠模式詳細分類

​ 簡單工廠模式

​ 用來生產同一等級結構中的任意產品(對於增加新的產品,需要覆蓋已有**)

​ 工廠方法模式

​ 用來生產統一結果中的固定產品(支援增加任意產品)

​ 抽象工廠模式

​ 圍繞乙個超級工廠建立其他工廠。該工廠又稱為其他工廠的工廠

工廠模式核心本質

​ 例項化物件不適用new,用工廠方法代替

​ 將選擇實現類,建立物件統一管理和控制。從而將呼叫者和我們的實現類解耦

不使用工廠建造

建立乙個汽車的介面

//汽車介面

public

inte***ce

car

建立五菱巨集光汽車介面的實現類

public

class

wuling

implements

car}

建立特斯拉汽車介面的實現類

public

class

tesila

implements

car}

測試

public

class

consumer

}

這時候每個物件都要去**是怎麼來的,還需要去關心裡面的細節使用簡單工廠模式

建立工廠

public class ca***ctory else if(car.equals("特斯拉"))else}}

測試

public

class

consumer

}

使用簡單工廠建立物件的好處:直接使用工廠建立出來的物件不需要考慮物件的細節使用簡單工廠模式的缺點:不符合開閉原則,一旦要新增新的實現類據需要更改工廠類的**邏輯

### 工廠方法

建立乙個汽車的介面

//汽車介面

public

inte***ce

car

建立工廠方法介面

public

inte***ce

ca***ctory

建立五菱巨集光汽車介面的實現類

public

class

wuling

implements

car}

建立特斯拉汽車介面的實現類

public

class

tesila

implements

car}

建立五菱巨集光汽車工廠

public

class

wuling

implements

car}

建立特斯拉汽車工廠

public

class

tesilafactory

implements

ca***ctory

}

測試

public

class

consumer

}

執行結果:

五菱巨集光!

特斯拉!

這時要增加新的需求:新增一汽大眾

建立大眾實現類

public

class

dazhong

implements

car}

建立大眾工廠

public

class

dazhongfactory

implements

ca***ctory

}

對測試新增

car dazhong=

newdazhongfactory()

.getcar()

;//一汽大眾

dazhong.

name()

;

執行結果:

五菱巨集光!

特斯拉!

一汽大眾!

使用工廠方法的優點:能隨時新增需求可以支援增加任意產品,不需要更改原來的任何**

使用抽象工廠模式建立 華為、小公尺的手機和路由器:

建立手機介面

public

inte***ce

iphoneproduct

建立路由器介面

public

inte***ce

irouterproduct

建立華為手機實現類

public

class

hwaeiphone

implements

iphoneproduct

@override

public

void

shutdown()

@override

public

void

callup()

@override

public

void

sendsms()

}

建立小公尺手機實現類

public

class

xiaomiphone

implements

iphoneproduct

@override

public

void

shutdown()

@override

public

void

callup()

@override

public

void

sendsms()

}

建立華為路由器實現類

public

class

huaweirouter

implements

irouterproduct

@override

public

void

shutdown()

@override

public

void

openwifi()

@override

public

void

setting()

}

建立小公尺路由器實現類

public

class

xiaomirouter

implements

irouterproduct

@override

public

void

shutdown()

@override

public

void

openwifi()

@override

public

void

setting()

}

建立抽象產品工廠

public

inte***ce

iproductfactory

建立華為工廠

//華為工廠

public

class

huaweifactory

implements

iproductfactory

@override

public irouterproduct routerprouct()

}

建立小公尺工廠

//小公尺工廠

public

class

xiaomifactory

implements

iproductfactory

@override

public irouterproduct routerprouct()

}

測試

public

class

client

}

執行結果:=小公尺手機生產線=開啟小公尺手機

關閉小公尺手機

小公尺手機打**

小公尺手機發簡訊

=華為手機生產線

=開啟華為手機

關閉華為手機

華為手機打**

華為手機發簡訊

=小公尺路由器生產線

=開啟小公尺路由器

關閉小公尺路由器

小公尺路由器開啟wifi

設定小公尺路由器

=華為路由器生產線

=開啟華為路由器

關閉華為路由器

華為路由器開啟wifi

設定華為路由器

設計模式2 工廠模式

定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使乙個類的例項化延遲到其子類。型別 建立型模式 類圖 工廠方法模式 inte ce iproduct class product implements iproduct inte ce ifactory class factory ...

設計模式2 工廠模式

工廠模式分為簡單工廠模式 工廠方法模式 抽象工廠模式。下面將依次介紹各個工廠模式 首先說說簡單工廠模式,我用現實中的汽車工廠舉例子,首先有個汽車類的介面叫做car,裡面有個開車的方法叫做drive 然後有個吉利車的類叫做jili,實現了car的介面,還有個奇瑞車的類叫做qirui,也實現了car的介...

設計模式 工廠模式2

要點 案例詳解 首先,我們還是建立乙個 car 的介面,並使用具體的車型實現 car 介面。然後,為了實現 ocp 開閉原則 open closed principe 我們在建立工廠類時,首先建立乙個工廠介面 ca ctory public inte ce ca ctory 方法很簡單,就是乙個造車...