工廠模式實現了建立者和呼叫者的分離
工廠模式詳細分類
簡單工廠模式
用來生產同一等級結構中的任意產品(對於增加新的產品,需要覆蓋已有**)
工廠方法模式
用來生產統一結果中的固定產品(支援增加任意產品)
抽象工廠模式
圍繞乙個超級工廠建立其他工廠。該工廠又稱為其他工廠的工廠
工廠模式核心本質
例項化物件不適用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 方法很簡單,就是乙個造車...