Create factory_method.go

This commit is contained in:
YikesHome 2019-10-31 03:05:23 +08:00 committed by GitHub
parent f515db98ba
commit e2de2e1600
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,33 @@
package data
import "io"
type Store interface {
Open(string) (io.ReadWriteCloser, error)
}
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( /*...*/ )
}
}
s, _ := NewStore(data.MemoryStorage)
f, _ := s.Open("file")
n, _ := f.Write([]byte("data"))
defer f.Close()