unity框架strangeioc研究分享
一、StrangeIOC涉及的设计模式
StrangeIOC涉及到的设计模式主要有中介者模式(Mediator)和数据绑定模式(Binding)。接下来,将为大家详细分享Unity框架StrangeIOC的相关内容。
二、基本概念
(一)依赖倒置原则(DIP)
依赖倒置原则(Dependency Inversion Principle,DIP)是一种软件架构设计的原则,它属于抽象概念。该原则强调高层模块不应该依赖低层模块,二者都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。
(二)控制反转(IoC)
控制反转(Inversion of Control,IoC)是一种反转流、依赖和接口的方式,它是依赖倒置原则的具体实现方式。在传统的程序设计中,对象的创建和依赖关系的管理通常由程序自身控制,而在IoC模式下,这些控制权被反转给了外部容器。
(三)依赖注入(DI)
依赖注入(Dependency Injection,DI)是控制反转的一种具体实现方式,其目的是反转依赖。通过依赖注入,对象在创建时会从外部获取其依赖的对象,而不是在内部自行创建,从而降低了对象之间的耦合度。
(四)IoC容器
IoC容器是依赖注入的框架,它的主要作用是映射依赖关系,管理对象的创建和生命周期,也被称为DI框架。在StrangeIOC中,控制反转(IoC)是整个框架的核心。
三、绑定——StrangeIOC框架的核心
(一)功能分类
绑定从功能上可以分为多种类型,例如:
- 将接口绑定到实现该接口的类。
- 将事件绑定到处理程序。
- 绑定两个类,使得当一个类被创建时,另一个类会自动创建。
这些绑定操作的目的是为了更方便地隔离变化,提高代码的可维护性和可扩展性。
(二)层次分类
绑定从层次上分为三种:注入绑定(Injection Binding)、命令绑定(Command Binding)和中介绑定(Mediation Binding)。
1. 注入绑定(Injection Binding)
注入绑定主要用于将特定类型的对象绑定到上下文。通过这种绑定方式,程序的各个部分可以通过ContextView访问到该对象。这种绑定会创建对象,并将其注入到指定的对象中。
2. 命令绑定(Command Binding)
命令绑定的作用是将命令绑定到相应的方法。通过这种绑定,当特定的事件触发时,与之绑定的命令方法会被执行。
3. 中介绑定(Mediation Binding)
中介绑定用于拦截View消息。具体做法是将View注入到中介者(Mediator)中,然后在View的Awake方法中创建Mediator对象。这样,Mediator就可以处理View发出的消息,实现View与其他部分的解耦。
四、实际项目中多个场景或者模块的处理
(一)事件消息穿透多个模块
在实际项目中,事件消息可以穿透多个模块。例如,使用crossContextBridge.Bind(MainEvent.GAME_COMPLETE),这样多个ContextView只要监听到这个消息就会被触发,类似于广播机制。
(二)Model跨模块传值
Model也可以跨多个上下文传值。通过injectionBinder.Bind<IScore>().To<ScoreModel>().ToSingleton().CrossContext(),可以将IScore接口绑定到ScoreModel类,并将其设置为单例,同时允许跨上下文访问。
(三)ContextView动态加载和卸载
ContextView可以动态卸载和加载,这使得在项目中可以根据需要灵活管理不同的上下文,提高资源的利用率。