ioc

简易版本Ioc
// ioc 容器功能定义
type Contaienr interface {
Registry(name string, obj Object)
Get(name string) Object
// 初始化所有已经注册的对象
Init() error
}
// 注册对象的约束
type Object interface {
Init() error
}
// 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
}