13 Star 33 Fork 27

go-course / go11

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
controller.go 1.02 KB
一键复制 编辑 原始数据 按行查看 历史
Mr.Yu 提交于 2023-06-03 11:52 . 添加认证中间件
package ioc
import "fmt"
// 管理Controller对象
// 采用一个map来存储对象, 存储在内存中, 程序启动 解决多个impl对象的依赖问题
var controller = map[string]IocObject{}
// 对所有的对象统一执行 初始化
func InitController() error {
for k, v := range controller {
err := v.Init()
if err != nil {
return fmt.Errorf("init %s error, %s", k, err)
}
}
return nil
}
// 可以管理任何对象, 我们定义的业务对象是不是还有基础的方法
// Init() 初始化对象的
// 托管业务实现的类
func RegistryController(obj IocObject) {
// 避免覆盖
// if _, ok := controller[obj.Name()]; ok {
// panic("该对象已经注册: " + obj.Name())
// }
controller[obj.Name()] = obj
}
// 打印下当前已经托管的实例的名称
func ShowConntrollers() (names []string) {
for k := range controller {
names = append(names, k)
}
return names
}
func GetController(name string) any {
v, ok := controller[name]
if !ok {
panic("controller not found: %s")
}
return v
}
Go
1
https://gitee.com/go-course/go11.git
git@gitee.com:go-course/go11.git
go-course
go11
go11
f4276bbab689

搜索帮助