小抄:选择 Unity 的对象生命周期管理员
Unity 框架提供了数种生命周期管理员,各有相同和相异之处。刚开始接触时,难免头昏。
制作这张小抄,只是为了要帮助自己理解和记忆。如果你也用 Untiy,或可参考看看。

文字說明:
- TransientLifetimeManager:每次解析时一律建立新的对象,且 Unity 容器不会保存该对象的参考(即容器不负责释放该对象)。此控制模式一般称为 Transient。
- ContainerControlledLifetimeManager:每次解析时都固定返回同一个既有对象,并且在容器本身摧毁时一并释放该对象。此生命周期模式的效果等同于 Singleton 模式。这也是呼叫 RegisterInstance 方法时的默认生命周期管理员。
- PerResolveLifetimeManager:类似 TransientLifetimeManager,主要差别在它在深层解析的过程中会重复使用同一个对象,而不会每次都建立新的对象。
- PerThreadLifetimeManager:基本上,此生命周期等于是线程范围内的 Singleton。其行为与 ContainerControlledLifetimeManager 雷同,差别仅在于它会依线程来决定是否要建立新的对象。此生命周期管理员不负责释放对象。
- ExternallyControlledLifetimeManager:与 ContainerControlledLifetimeManager 一样具有 Singleton 的效果,但主要的差别在于,ExternallyControlledLifetimeManager 是保存对象的弱参考(weak reference)。如此一来,你就可以完全掌控释放对象的时机,例如在用完对象时立刻呼叫它的 Dispose 方法来释放该对象。显然,此生命周期管理员不负责释放对象。
- HierarchicalLifetimeManager:用于阶层式容器,亦即容器本身又包含了子容器的场合。基本上,此生命周期的行为等同于 ContainerControlledLifetimeManager 再加上对子容器的额外控制:子容器有自己的 Singleton 范围,不会跟父容器共享同一个对象。
- PerRequestLifetimeManager:此生命周期管理员只适用于 Web 应用程序。它能够确保在同一个 HTTP 请求的范围内解析某类型时总是返回同一个对象。基本上,它就是一次 HTTP 请求范围内的 Singleton。
小抄:选择 Unity 的对象生命周期管理员的更多相关文章
- IOS 视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- 【转】【iOS知识学习】_视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途
原文网址:http://blog.csdn.net/weasleyqi/article/details/8090373 iOS视图控制对象生命周期-init.viewDidLoad.viewWillA ...
- _视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- Ninject之旅之三:Ninject对象生命周期
摘要 DI容器的一个责任是管理他创建的对象的生命周期.他应该决定什么时候创建一个给定类型的对象,什么时候使用已经存在的对象.他还需要在对象不需要的时候处理对象.Ninject在不同的情况下管理对象的生 ...
- iOS视图控制对象生命周期
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
在上文中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行代码就展示了一个基本工作原理.然而,要将这样的解决方案运用到实际生产环境,还有很 ...
- JAVAEE_Servlet_03_Servlet对象生命周期
Servlet的对象声明周期 * 什么是对象生命周期? - 生命周期表示一个JAVA对象从创建到销毁的过程是一个生命周期 * Servlet对象生命周期 1. Servlet对象创建 无参构造 2. ...
- Unity基础-脚本生命周期
理解Unity脚本的生命周期对游戏开发很重要,这篇文章对生命周期做一个记录和总结.Unity的脚本生命周期(消息),也就是在脚本运行时,自动并且按顺序执行的一系列函数.在unity官网中有对生命周期详 ...
- Hibernate的三种状态及对象生命周期
理解Hibernate的三种状态,更利于理解Hibernate的运行机制,这些可以让你在开发中对疑点问题的定位产生关键性的帮助. 三种状态 临时状态(Transient):在通过new关键字, ...
随机推荐
- storm 经常使用类
弄 <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core< ...
- Android获取Context(任意位置任意地方,全局上下文)
一般获取context的方法 1.Activity.this的context (一般用法)返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁 2.getAppli ...
- iOS开发 - OC - block的详解 - 基础篇
深入理解oc中的block 苹果在Mac OS X10.6 和iOS 4之后引入了block语法.这一举动对于许多OC使用者的编码风格改变很大.就我本人而言,感觉block用起来还是很爽的,但一直以来 ...
- hudson搭建经验总结(三)
作者:朱金灿 来源:http://blog.csdn.net/clever101 在创建hudson账户和分配权限时出错,当单击save按钮时出现 HTTP Status 500 - type Exc ...
- WPF依赖属性(续)(2)依赖属性与附加属性的区别
原文:WPF依赖属性(续)(2)依赖属性与附加属性的区别 接上篇,感谢各位的评论,都是认为依赖属性的设计并不是为了节省内存,从大的方面而讲是如此.样式,数据绑定,动画样样都离不开它.这篇 ...
- jQuery分离构造器
http://www.imooc.com/code/3401 通过new操作符构建一个对象,一般经过四步: A.创建一个新对象 B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) ...
- Android设备与外接U盘实现数据读取操作
现在越来越多手机支持OTG功能,通过OTG可以实现与外接入的U盘等USB设备实现数据传输.关于OTG,可以参考: http://blog.csdn.net/srw11/article/details/ ...
- C#将string转换为十六进制
/// <summary> /// 将string格公式为十六进制数据 /// </summary> /// <param ...
- VS2015编译环境下CUDA安装配置
CUDA下载 CUDA是NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题,CUDA只支持NVIDIA自家的显卡,过旧的版本型号也不被支持. 下载地址:https://devel ...
- 微信公众平台消息接口开发(24)图片识别之人脸识别API
微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 图片识别 人脸识别 API 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archi ...