• 【Unity 框架】QFramework v1.0 使用指南 架构篇:18. 内置工具:IOCContainer | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏


    QFramework 架构的模块注册与获取是通过 IOCContainer 实现的。

    IOC 的意思是控制反转,即控制反转容器。

    其技术的本质很简单,本质就是一个字典,Key 是 Type,Value 是 Object,即:Dictionary<Type,object>。

    QFramework 架构中的 IOCContainer 是一个非常简易版本的控制翻转容器,仅支持了注册对象为单例的模式。

    一般情况下,其他的控制反转容器会有各种各样的对象注册模式,有的甚至会内置对象池和对象工厂,比如 Zenject。

    不过,我们先不用理会那些,如果先上手使用了最简易的版本,其他版本会更容易上手。

    我们看下 IOCContainer 的基本使用。

    代码如下:

    using System;
    using UnityEngine;
    
    namespace QFramework.Example
    {
        public class IOCContainerExample : MonoBehaviour
        {
            
            public class SomeService
            {
                public void Say()
                {
                    Debug.Log("SomeService Say Hi");
                }
            }
            
            
            public interface INetworkService
            {
                void Connect();
            }
            
            public class NetworkService : INetworkService
            {
                public void Connect()
                {
                    Debug.Log("NetworkService Connect Succeed");
                }
            }
    
            private void Start()
            {
                var container = new IOCContainer();
                
                container.Register(new SomeService());
                
                container.Register<INetworkService>(new NetworkService());
                
                
                container.Get<SomeService>().Say();
                container.Get<INetworkService>().Connect();
            }
        }
    }
    
    // 输出结果:
    // SomeService Say Hi
    // NetworkService Connect Succeed
    

    非常简单。

    但是对于很多初学者,IOCContainer 感觉不知道怎么用,也无法理解。

    这里给一个简单的说法,使用 IOCContainer 更容易设计出符合依赖倒置原则的模块。

    而 QFramework 架构的用接口设计模块的支持就是通过 IOCContainer 支持的,同样使用 IOCContainer 也更容易设计出分层的架构。

    好了,关于 IOCContainer 就介绍到这里。

    更多内容

  • 相关阅读:
    HDU1050
    POJ3528移石头
    CodeForces230A
    lca学习题
    rmq的st算法模板题 nyoj 119
    rmq问题和lca可以相互转化
    rmq算法,利用倍增思想
    poj 1274 基础二分最大匹配
    hdu 1520 树形dp入门题
    poj 1466 最大独立集
  • 原文地址:https://www.cnblogs.com/liangxiegame/p/16798674.html
Copyright © 2020-2023  润新知