日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式--建造者(Builder)模式

發(fā)布時(shí)間:2025/3/21 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式--建造者(Builder)模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

模式定義

將一個(gè)復(fù)雜對(duì)象的創(chuàng)建與他的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示

類圖

應(yīng)用場(chǎng)景

1.需要生成的對(duì)象具有復(fù)雜的內(nèi)部結(jié)構(gòu);

2.需要生成的對(duì)象內(nèi)部屬性本身相互依賴;

3.與不可變對(duì)象配合使用;

優(yōu)點(diǎn)

1.建造者獨(dú)立,易擴(kuò)展;

2.便于控制細(xì)節(jié)風(fēng)險(xiǎn);

要點(diǎn)總結(jié)

  • Builder模式主要用于“分步驟構(gòu)建一個(gè)復(fù)雜的對(duì)象”,在這其中“分步驟”是一個(gè)穩(wěn)定的算法,而復(fù)雜對(duì)象的各個(gè)部分則經(jīng)常變化
  • 變化點(diǎn)在哪里,封裝哪里----Builder模式主要在于應(yīng)對(duì)“復(fù)雜對(duì)象各個(gè)部分”的頻繁需求變動(dòng),其缺點(diǎn)在于難以應(yīng)對(duì)“分步驟構(gòu)建算法”的需求變動(dòng)

Go語言代碼實(shí)現(xiàn)

工程目錄

Builder.go

package Buildertype Builder interface {Part1()Part2()Part3() }type Director struct {builder Builder //建造者的接口 }//創(chuàng)造接口 func NewDirector (builder Builder) *Director {return &Director{builder: builder} }func (d *Director) Makedata(){d.builder.Part1()d.builder.Part2()d.builder.Part3() }

StringBuilder.go

package Buildertype StringBuilder struct {result string }func (sb *StringBuilder) Part1 () {sb.result += "1" }func (sb *StringBuilder) Part2 () {sb.result += "2" }func (sb *StringBuilder) Part3 () {sb.result += "3" }func (sb *StringBuilder) GetResult() string {return sb.result }

IntBuilder.go

package Buildertype IntBuilder struct {result int64 }func (ib *IntBuilder) Part1 () {ib.result += 1 }func (ib *IntBuilder) Part2 () {ib.result += 2 }func (ib *IntBuilder) Part3 () {ib.result += 3 }func (ib *IntBuilder) GetResult() int64 {return ib.result }

Builder_test.go

package Builderimport ("fmt""testing" )func TestIntBuilder(t *testing.T) {sbuilder := &StringBuilder{}dict := NewDirector(sbuilder)dict.Makedata()fmt.Println(sbuilder.GetResult())ibuilder := &IntBuilder{}dict = NewDirector(ibuilder)dict.Makedata()fmt.Println(ibuilder.GetResult()) }

總結(jié)

以上是生活随笔為你收集整理的设计模式--建造者(Builder)模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。