Add singleton creational pattern

This commit is contained in:
Tamer Tas committed 2016-05-14 16:14:09 +03:00
1 parent d90a201871
commit 3d2d78a8a2
3 files changed
+37 -22

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
#Singleton Pattern
Singleton creational design pattern restricts the instantiation of a type to a single object.
## Implementation
```go
package singleton
type singleton map[string]string
var once sync.Once
var instance *singleton
func New() *singleton {
once.Do(func() {
instance = make(singleton)
})
return instance
}
```
## Usage
```go
s := singleton.New()
s["this"] = "that"
s2 := singleton.New()
// s2["this"] == "that"
```
## Rules of Thumb
- Singleton pattern represents a global state and most of the time reduces testability.