Go Patterns 一 單例模式

2021-10-14 05:28:32 字數 977 閱讀 6601

單例(singleton)模式的定義:指乙個類只有乙個例項,且該類能自行建立這個例項的一種模式。

單例模式有 3 個特點:

單例類只有乙個例項物件;

該單例物件必須由單例類自行建立;

單例類對外提供乙個訪問該單例的全域性訪問點。

單例模式的優點:

單例模式的缺點:

go的單例實現主要借助sync.once實現,乙個簡單的單例模式:

package singleton

import "sync"

/* 單類模式嚴格乙個類只有乙個例項,並提供乙個全域性的訪問介面

*設計思想

1.宣告乙個全域性變數

2.多執行緒考慮執行緒安全,引入sync.once

*/type contract struct

var (

globalcon *contract

contractonce sync.once

)func newcontract() *contract

}) return globalcon

}

測試:

func testnewcontract(t *testing.t) 

}

輸出每次例項化都是指向同一塊記憶體:

=== run   testnewcontract

con p =0xc000046500

con p =0xc000046500

con p =0xc000046500

con p =0xc000046500

con p =0xc000046500

con p =0xc000046500

con p =0xc000046500

con p =0xc000046500

con p =0xc000046500。。

一 單例模式

單例模式是最簡單的模式,只是在併發的時候單例模式的懶漢模式會有執行緒不安全的情況 單執行緒 單例模式 懶漢模式 執行緒不安全 package com.wb.single public class single public static single getinstance return singl...

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...

單例 單例模式

簡單的實現乙個單例 instancetype sharedinstance return instance 真正的單例模式 myclass sharedinstance return instance id allocwithzone nszone zone return nil id copywi...