golang 디자인 모드
11886 단어 golang
type config map[string]string
var (
once sync.Once
instance config
)
func Config() {
// Do
once.Do(func(){
instance = make(config)
})
return instance
}
4. 567917. 대상 풀 대상 풀 은 여러 개의 인 스 턴 스 를 유지 하 는 데 사용 된다.일반적으로 대상 의 새로운 원가 가 높 은 장면 을 처리 하 는데 사용 된다. 예 를 들 어 데이터 뱅 크 의 연결, 바 텀 에 대상 탱크 가 존재 할 것 이다.하나의 간단 한 실현 은 channel 로 연못 을 모 의 한 것 입 니 다. 그 중에서 대상 의 인 스 턴 스 를 꺼 내 서 다 쓴 후에 다시 넣 는 것 입 니 다
type Pool chan *Object
func New(total int) *Pool{
p := make(Pool.total)
for i := 0;i<total;i++{
p <= new(Object)
}
return &p
}
// usage
p := New(2)
obj p
// do someting
p obj
4. 567917. 공장 모델 은 통속 적 으로 말 하면 공장 모델 은 생산 라인 만 제공 하고 마지막 에 나 온 것 은 네가 준 원료 에 따라 다 르 기 때문에 사례 의 구체 적 인 실현 을 지연 시 켰 다
type StorageType int
const (
DiskStorage StorageType = 1 << iota
TempStorage
MemoryStorage
)
func NewStore(t StorageType) Store {
switch t {
case MemoryStorage:
return newMemoryStorage( /*...*/ )
case DiskStorage:
return newDiskStorage( /*...*/ )
default:
return newTempStorage( /*...*/ )
}
}
// userage
s, _ := data.NewStore(data.MemoryStorage)
f, _ := s.Open("file")
n, _ := f.Write([]byte("data"))
defer f.Close()
4. 567917. 공장 모델 과 비슷 한 것 은 건축 자 모델 이 고 건축 자 모델 을 생산 라인 으로 이해 할 수 있 지만 이 생산 라인 의 중심 은 여러 가지 원료 간 의 조합 관계 이다
type Speed float64
const (
MPH Speed = 1
KPH = 1.60934
)
type Color string
const (
BlueColor Color = "blue"
GreenColor = "green"
RedColor = "red"
)
type Wheels string
const (
SportsWheels Wheels = "sports"
SteelWheels = "steel"
)
type Builder interface {
Color(Color) Builder
Wheels(Wheels) Builder
TopSpeed(Speed) Builder
Build() Interface
}
type Interface interface {
Drive() error
Stop() error
}
// useage
assembly := car.NewBuilder().Paint(car.RedColor)
familyCar := assembly.Wheels(car.SportsWheels).TopSpeed(50 * car.MPH).Build()
familyCar.Drive()
sportsCar := assembly.Wheels(car.SteelWheels).TopSpeed(150 * car.MPH).Build()
sportsCar.Drive()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
set containerThere is no built-in set container in Go How to implement Set struct{} => type struct{}{} => 0bytes How to create set :=...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.