go18/skills/ioc/map.go

39 lines
726 B
Go

package ioc
var Api = NewMapContainer("api")
var Controller = NewMapContainer("controller")
var Config = NewMapContainer("config")
var Default = NewMapContainer("default")
func NewMapContainer(name string) Contaienr {
return &MapContainer{
name: name,
storage: map[string]Object{},
}
}
// ioc 容器
type MapContainer struct {
name string
storage map[string]Object
}
func (m *MapContainer) Registry(name string, obj Object) {
m.storage[name] = obj
}
func (m *MapContainer) Get(name string) Object {
return m.storage[name]
}
// 初始化所有已经注册的对象
func (m *MapContainer) Init() error {
for _, v := range m.storage {
if err := v.Init(); err != nil {
return err
}
}
return nil
}