// Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved. package container import ( "errors" "fmt" ) // 组件句柄管理器 type HandlerManager struct { // 组件句柄映射: map[接口类型]组件句柄 handlerMapping map[Interface]ComponentHandler } // 创建组件句柄管理器 // 参数 // 1.会话标识 // 2.用户信息 // 3.服务映射: map[接口类型]组件句柄 // 返回值: // 1.会话 // 2.错误 func NewHandlerManager(handlerMapping map[Interface]ComponentHandler) (*HandlerManager, error) { if len(handlerMapping) > 0 { for interfaceType, handler := range handlerMapping { if interfaceType == nil { return nil, errors.New(fmt.Sprintf("组件接口不能为空!")) } if handler == nil { return nil, errors.New(fmt.Sprintf("组件句柄不能为空!")) } } } return &HandlerManager{handlerMapping}, nil } // 获取指定接口的组件句柄 // 参数 // 1.服务接口类型 // 返回值: // 1.组件句柄 func (session *HandlerManager) Handler(interfaceType Interface) ComponentHandler { if interfaceType == nil { return nil } componentHandler, ok := session.handlerMapping[interfaceType] if !ok { return nil } return componentHandler }