开发者社区 问答 正文

IOC-golang如何体现其可扩展性?

IOC-golang如何体现其可扩展性?

展开
收起
花开富贵111 2024-08-19 15:07:41 46 分享 版权
2 条回答
写回答
取消 提交回答
  • IOC-golang通过以下几个方面体现其可扩展性:
    依赖注入过程的可扩展性:支持针对特殊场景的定制化,包括对象的可扩展性、结构的可扩展性和自动装载模型的可扩展性。
    对象的可扩展性:允许通过传入不同的参数来获取多个期望的对象实例。
    结构的可扩展性:允许开发者定义自己的结构描述信息,并将其注册在框架上,以供使用。
    自动装载模型的可扩展性:提供预置的自动装载模型(如单例模型、多例模型等),并支持开发者根据业务需要进行定制化。

    2024-08-19 16:15:50
    赞同 3 展开评论
  • IOC-golang 的可扩展性体现在多个方面,其中最重要的是依赖注入过程的可扩展性,这也是框架能的核心能力。

    依赖注入的可扩展性包含三个维度,从具体到抽象分别是:

    • 对象的可扩展性
      对象的可扩展性,即针对确定的一个结构(非单例),你可以通过传入不同的参数来获取多个期望的对象。这个过程往往被结构使用者关注,他需要思考如何传入参数,获得对象,调用对象从而实现正确的业务逻辑。通过这一可扩展性,结构使用者可以扩展出多个对象实例。

    • 结构的可扩展性
      结构的可扩展性,即针对一个确定的自动装载模型,你可以通过定义自己的结构描述信息,将你的结构体注册在框架上,以供使用。这个过程是结构提供者关心的,他需要思考选用哪个自动装载模型,思考提供的结构的全部生命周期信息。通过这一可扩展性,结构提供者可以为框架注入多种多样的结构,这些结构都会按照被选择的自动装载模型执行加载逻辑。

      框架提供了一些预置的结构,例如 redis 客户端、gorm客户端等等,开发者可以直接传入参数,注入或通过API获取,直接使用,但这些预置的结构一定无法覆盖业务需求的。开发者注册自己的任何结构到框架上,都是使用了结构的可扩展性,这些被注册的结构和框架提供的预置结构,都是同一层面的概念。

    • 自动装载模型的可扩展性
      自动装载模型描述了一类结构的装载方式,例如是否单例模型、参数从哪里加载、注入标签应该符合什么格式等等。这个过程也是结构提供者关心的。

      框架提供了一些预置的自动装载模型,例如单例模型、多例模型、配置模型、rpc 模型等,开发者可以根据按照业务需要,将一个或多个结构注册在期望的自动装载模型上,当已有的自动装载模型不足以适配业务场景,开发者可以调用API进行定制化。

    image.png

    ——参考链接

    2024-08-19 16:05:12
    赞同 展开评论
问答地址: