2025-05-31 10:50:37 +08:00
..
2025-05-25 16:59:22 +08:00
2025-05-25 16:59:22 +08:00
2025-05-31 10:50:37 +08:00
2025-05-25 17:01:17 +08:00

ioc

alt text

简易版本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
}