39 lines
726 B
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
|
||
|
}
|