真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go中設(shè)計(jì)模式之創(chuàng)建型模式-創(chuàng)新互聯(lián)

設(shè)計(jì)模式總共24種, 本篇教你學(xué)會在go語言中使用創(chuàng)建型模式

成都創(chuàng)新互聯(lián)公司主營順昌網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),順昌h5小程序設(shè)計(jì)搭建,順昌網(wǎng)站營銷推廣歡迎順昌等地區(qū)企業(yè)咨詢
創(chuàng)建型:  單例模式   簡單工廠模式   工廠方法模式   抽象工廠模式  建造者模式  原型模式
結(jié)構(gòu)型:  代理模式   適配器模式   裝飾器模式   橋接模式   組合模式   享元模式  外觀模式 
行為型:  觀察者模式   模板方法模式   命令模式   狀態(tài)模式   職責(zé)鏈模式   解釋器模式   中介者模式   訪問者模式   策略模式  備忘錄模式  迭代器模式

單例模式

1. 定義: 單例是一個(gè)軟件設(shè)計(jì)標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)保證只存在一個(gè)類的實(shí)例,同時(shí)保持對其對象的全局訪問點(diǎn)

2. 代碼示例:

// Singleton 單例結(jié)構(gòu)
type Singleton struct{}

var (
    // 定義單例對象和sync.Once變量組聲明
    singleton *Singleton
    once      sync.Once
)

// 實(shí)現(xiàn)初始化單例對象私有函數(shù)
func initSingleton() {
    singleton = &Singleton{}
}

// GetInstance 用于獲取單例對象
func GetInstance() *Singleton {
    once.Do(initSingleton)

    return singleton
}

3. 實(shí)現(xiàn)步驟

  • 定義單例結(jié)構(gòu)
  • 定義單例對象和sync.Once變量組聲明
  • 實(shí)現(xiàn)初始化單例對象私有函數(shù)
  • 實(shí)現(xiàn)導(dǎo)出單例對象函數(shù),并once.Do調(diào)用初始化操作

4. 使用場景

初始化包全局變量使用,如log初始化等,對于能在 main 中直接完成的初始化操作可以不使用單例模式。

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

單例模式的主要優(yōu)點(diǎn)在于提供了對唯一實(shí)例的受控訪問并可以節(jié)約系統(tǒng)資源

6. 深入閱讀

https://medium.com/golang-issue/how-singleton-pattern-works-with-golang-2fdd61cd5a7f

工廠模式

1. 定義: 可以根據(jù)參數(shù)的不同返回不同類的實(shí)例,因?yàn)間o中沒有繼承,所以不用區(qū)分簡單工廠模式、工廠方法模式 抽象工廠模式。

2. 代碼示例:

// 定義 API 接口
type API interface {
    Save()
}

// 定義 New 函數(shù)返回 API
func NewAPI(name string) API {
    if name == "mem" {
        return &memAPI{}
    } else if name == "file" {
        return &fileAPI{}
    }
    return nil
}

// 實(shí)現(xiàn)接口類型
type memAPI struct{}

func (*memAPI) Save() {
}

// 實(shí)現(xiàn)接口類型
type fileAPI struct{}

func (*fileAPI) Save() {
}

3. 實(shí)現(xiàn)步驟

  • 定義 API 接口
  • 定義 New 函數(shù)返回 API
  • 實(shí)現(xiàn)接口類型
  • 補(bǔ)充New函數(shù),返回實(shí)現(xiàn)類型

4. 使用場景

常用于組件開發(fā)中,如消息中間件、緩存中間件

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

封裝了實(shí)現(xiàn)細(xì)節(jié),將對象的創(chuàng)建和使用分離,方便內(nèi)部實(shí)現(xiàn)擴(kuò)展

建造者模式

1. 定義: 將一個(gè)復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。

2. 代碼示例:

// Builder 建造者接口
type Builder interface {
    Part1()
    Part2()
    Part3()
}

// Director 指揮官
type Director struct {
    builder Builder
}

func NewDirector(builder Builder) *Director {
    return &Director{
        builder: builder,
    }
}

func (d *Director) Construct() {
    d.builder.Part1()
    d.builder.Part2()
    d.builder.Part3()
}

type Builder1 struct {
    result string
}

func (b *Builder1) Part1() {
    b.result += "1"
}

func (b *Builder1) Part2() {
    b.result += "2"
}

func (b *Builder1) Part3() {
    b.result += "3"
}

func (b *Builder1) GetResult() string {
    return b.result
}

type Builder2 struct {
    result int
}

func (b *Builder2) Part1() {
    b.result += 1
}

func (b *Builder2) Part2() {
    b.result += 2
}

func (b *Builder2) Part3() {
    b.result += 3
}

func (b *Builder2) GetResult() int {
    return b.result
}

3. 實(shí)現(xiàn)步驟

  • 定義 構(gòu)建 Builder 接口
  • 定義 Director 實(shí)現(xiàn)構(gòu)建過程
  • 實(shí)現(xiàn) Builder 接口

4. 使用場景

在很多游戲軟件中,地圖包括天空、地面、背景等組成部分,人物角色包括人體、服裝、裝備等組成部分,可以使用建造者模式對其進(jìn)行設(shè)計(jì),通過不同的具體建造者創(chuàng)建不同類型的地圖或人物。

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

將產(chǎn)品本身與產(chǎn)品的創(chuàng)建過程解耦,使得相同的創(chuàng)建過程可以創(chuàng)建不同的產(chǎn)品對象。

原型模式

1. 定義: 通過“復(fù)制”一個(gè)已經(jīng)存在的實(shí)例來返回新的實(shí)例,而不是新建實(shí)例。被復(fù)制的實(shí)例就是我們所稱的“原型”。

2. 代碼示例:

// 示例結(jié)構(gòu)體
type Example struct {
    Content string
}

func (e *Example) Clone() *Example {
    res := *e
    return &res
}

func main() {
    r1 := new(Example)
    r1.Content = "this is example 1"
    r2 := r1.Clone()
    r2.Content = "this is example 2"

    fmt.Println(r1)
    fmt.Println(r2)

}

3. 實(shí)現(xiàn)步驟

  • 創(chuàng)建一個(gè)結(jié)構(gòu)體
  • 添加克隆方法

4. 使用場景

相似但重新創(chuàng)建會比較繁瑣的對象

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

參考鏈接:
https://www.cnblogs.com/zuoxiaolong/p/pattern26.html
https://design-patterns.readthedocs.io/zh_CN/latest/index.html

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


網(wǎng)站名稱:go中設(shè)計(jì)模式之創(chuàng)建型模式-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/cohheg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部