博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity IOC简单认知
阅读量:6466 次
发布时间:2019-06-23

本文共 2085 字,大约阅读时间需要 6 分钟。

看了不少IOC的文章。简单概念梳理下。


1.依赖,依赖倒置,控制反转(IOC),依赖注入

  解释是仿照的例子。

  依赖:类和类之间的联系。例如播放器类依赖媒体文件类

  依赖倒置:本来是A类依赖B类。现在创建IB接口类。让A和B不再互相依赖,A类只知道自己需要调用IB接口的类。例如实现媒体文件接口类。好处在于下次再有新的媒体文件, 播放器类不用重构。

  控制反转:本来A类要调用B类就需要创建B类实例,A类要调用C类就需要创建C类实例,而现在具体是调用哪个实例是由配置控制。例如:创建媒体文件类的工作不再由播放器类来完成。Main方法配置去控制是MP3文件还是默认文件。

  依赖注入:当创建调用者的时候,IOC容器会向调用注入被调用的实例,因此也称为依赖注入。例如IOC的构造函数注入

  下面贴下代码:方便以后回忆的时候看。

  class Program    {        static void Main(string[] args)        {            UnityContainer container = new UnityContainer();            container.RegisterType
(); container.RegisterType
(); container.RegisterType
(); container.RegisterType
(); var op1 = container.Resolve
(); op1.Do(); //以前的调用方法 //var op2 = new Operation(new 网易云Player(),new MP3MediaFile()); //op2.Do(); Console.ReadKey(); } }
public class Operation    {        IMediaFile _mtype;        IPlayer _player;        public Operation(IPlayer player, IMediaFile mtype)        {            _player = player;            _mtype = mtype;        }        public void Do() { _player.play(_mtype); } }
    public interface IPlayer     {     void play(IMediaFile file);    } public class DefalutPlayer: IPlayer    {        public void play(IMediaFile file)        {            Console.Write("默认:"+file.Name);        }    }    public class WYYPlayer : IPlayer    {        public void play(IMediaFile file)        {            Console.Write("网易云:" + file.Name);        }    }    public interface IMediaFile    {        string Name { get; set; }    } public class DefaultMediaFile: IMediaFile    {        public string Name { get; set; } = "默认文件";    }    public class MP3MediaFile : IMediaFile    {        public string Name { get; set; } = "MP3文件";    }

  后续:UNITY 容器注入什么就拿到什么。想做到插件式开发。还需要定制注入的规则。

  说个插件式开发流程:比如有A实现,B实现。我想要真正来做的是B的方法。

  1.反射A,B拿到AB的type。

  2.在RegisterType的时候根据具体情况注入哪个。比如数组排序,比如type优先级等

  

转载于:https://www.cnblogs.com/TeemoHQ/p/5941748.html

你可能感兴趣的文章
轮播插件swiper.js?
查看>>
15 个 Android 通用流行框架大全
查看>>
IE8兼容@media和mp4视频的解决方案
查看>>
【转】知道这20个正则表达式,能让你少写1,000行代码
查看>>
自定义 启动和关闭 oracle 的命令
查看>>
Quartz
查看>>
正则表达式介绍
查看>>
初识Scala反射
查看>>
第三十九天
查看>>
Redis详解
查看>>
论程序员加班的害处
查看>>
codeblocks快捷键
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
WPF资料链接
查看>>
过滤DataTable表中的重复数据
查看>>
再次更新
查看>>
mysql的数据类型int、bigint、smallint 和 tinyint取值范围
查看>>
移动铁通宽带上网设置教程
查看>>
Python算法(含源代码下载)
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>