Skip to content

Commit e2de2e1

Browse files
authored
Create factory_method.go
1 parent f515db9 commit e2de2e1

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

creational/factory_method.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package data
2+
3+
import "io"
4+
5+
type Store interface {
6+
Open(string) (io.ReadWriteCloser, error)
7+
}
8+
9+
10+
type StorageType int
11+
12+
const (
13+
DiskStorage StorageType = 1 << iota
14+
TempStorage
15+
MemoryStorage
16+
)
17+
18+
func NewStore(t StorageType) Store {
19+
switch t {
20+
case MemoryStorage:
21+
return newMemoryStorage( /*...*/ )
22+
case DiskStorage:
23+
return newDiskStorage( /*...*/ )
24+
default:
25+
return newTempStorage( /*...*/ )
26+
}
27+
}
28+
29+
s, _ := NewStore(data.MemoryStorage)
30+
f, _ := s.Open("file")
31+
32+
n, _ := f.Write([]byte("data"))
33+
defer f.Close()

0 commit comments

Comments
 (0)