當(dāng)前位置:
首頁 >
设计模式--工厂方法(Factory Method)模式
發(fā)布時(shí)間:2025/3/21
27
豆豆
生活随笔
收集整理的這篇文章主要介紹了
设计模式--工厂方法(Factory Method)模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
模式定義
定義一個(gè)用于創(chuàng)建對象的接口,讓子類決定實(shí)例化哪一個(gè)類,使得一個(gè)類的實(shí)例化延遲到子類
類圖
應(yīng)用場景
1.當(dāng)你不知道該使用對象的確切類型的時(shí)候;
2.當(dāng)你希望為庫或框架提供擴(kuò)展其內(nèi)部組件的方法時(shí)。
主要優(yōu)點(diǎn)
1.將具體產(chǎn)品和創(chuàng)建者解耦;
2.符合單一職責(zé)原則;
3.符合開閉原則。
要點(diǎn)總結(jié)
- Factory Method模式用于隔離類對象的使用者和具體類型之間的耦合關(guān)系。面對一個(gè)經(jīng)常變化的具體類型,緊耦合關(guān)系(new)會導(dǎo)致軟件的脆弱
- Factory Method模式通過面向?qū)ο蟮氖址?#xff0c;將所要創(chuàng)建的具體對象工作延遲到子類,從而實(shí)現(xiàn)一種擴(kuò)展(而非更改)的策略,較好地解決了這種緊耦合關(guān)系
- Factory Method模式解放了“單個(gè)對象”的需求變化,缺點(diǎn)在于要求創(chuàng)建方法、參數(shù)相同
Go語言實(shí)現(xiàn)
工程目錄
OperatorFactory.go
package Factory//實(shí)際運(yùn)行類的接口 type Operator interface {SetLeft(int)SetRight(int)Result() int }//工廠接口 type OperatorFactory interface {Create() Operator }OperatorData.go
package Factory//數(shù)據(jù) type OperatorData struct {left, right int }//賦值 func (op *OperatorData) SetLeft(left int) {op.left = left }func (op *OperatorData) SetRight(right int) {op.right = right }PlusOpertaorFactory.go
package Factory//操作的抽象 type PlusOpertaorFactory struct {}//操作類中包含操作數(shù) type PlusOpertaor struct {*OperatorData }//實(shí)際運(yùn)行方法 func(o PlusOpertaor) Result() int {return o.right + o.left } func(PlusOpertaorFactory) Create() Operator {return &PlusOpertaor{&OperatorData{}} }SubOpertaorFactory.go
package Factory//操作的抽象 type SubOpertaorFactory struct {}//操作類中包含操作數(shù) type SubOpertaor struct {*OperatorData }//實(shí)際運(yùn)行方法 func(o SubOpertaor) Result() int {return o.left - o.right } func(SubOpertaorFactory) Create() Operator {return &SubOpertaor{&OperatorData{}} }factory_test.go
package Factoryimport ("fmt""testing" )func TestOpertaorFactory(t *testing.T) {var fac OperatorFactoryfac = PlusOpertaorFactory{}op := fac.Create()op.SetLeft(20)op.SetRight(10)fmt.Println(op.Result())fac = SubOpertaorFactory{}op = fac.Create()op.SetLeft(30)op.SetRight(20)fmt.Println(op.Result()) }總結(jié)
以上是生活随笔為你收集整理的设计模式--工厂方法(Factory Method)模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式--桥(Bridge)模式
- 下一篇: 设计模式--抽象工厂(Abstract