一谈到 『IoC』,有经验的程序员马上会联想到控制反转,将创建对象的责任反转给工厂。IoC是依赖注入 『DI』 的核心,大名鼎鼎的Spring框架就是一个非常卓越的的控制反转、依赖注入框架。遗憾的是,我们显然不能在Unity 3D中去使用Spring框架,但思想是相通的——IoC也好,控制反转也罢,本质上是一个工厂,或者又被称为容器,我们可以自己维护一个工厂来实现对对象的管理,这也是本文的核心内容。
工厂模式初探
工厂,顾名思义,就是生产对象的地方。如果之前没有接触过设计模式,你可能会疑惑,我直接使用 『new』 关键字难道不能创建对象吗?为什么还要大费周章的让工厂来创建?当然这是没错的,直接使用 『new』 关键字很简洁,也很易懂,但你考虑过对象的释放吗?你可能会说不用考虑啊,GC会帮我们回收啊。
其实问题就出在这里,因为你没有考虑对象管理的动机,所以就不会有工厂这个概念。试想一下,使用ADO.NET或者JDBC去访问数据库,我们是不是要先建立一个Connection,当工作结束后,Close了这个连接。当再一次需要连接数据库时,再建立一次Connection,这背后其实有隐患。因为和数据库建立连接是非常耗时的,只是我们感受不到。我们能不能在关闭连接时,不销毁对象,而是将其放到一个对象池,当下一次请求来时,直接从对象池中获取。这就是工厂的动机,对对象的创建和释放进行管理,这样可以有效的提高效率。
网友评论

