From c7fa46290c917bfca3a744f743fef1454f1b925f Mon Sep 17 00:00:00 2001 From: yumaojun03 <719118794@qq.com> Date: Sun, 25 May 2025 17:01:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0ioc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skills/ioc/README.md | 45 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/skills/ioc/README.md b/skills/ioc/README.md index ccc319f..a7f4bce 100644 --- a/skills/ioc/README.md +++ b/skills/ioc/README.md @@ -2,4 +2,47 @@ ![alt text](image.png) -# 没有Ioc \ No newline at end of file +# 简易版本Ioc + +```go +// ioc 容器功能定义 +type Contaienr interface { + Registry(name string, obj Object) + Get(name string) Object + // 初始化所有已经注册的对象 + Init() error +} + +// 注册对象的约束 +type Object interface { + Init() error +} +``` + + +```go +// 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 +} +``` \ No newline at end of file