Spring.NET 学习笔记1——控制反转(基础篇) Level 200 在学习Spring.NET 这个控制反转(IoC)和面向切面(AOP)的容器框架之前,我们先来看一下什么是控制反转(IoC)。 控制反转(Inversion of Control,英文缩写为 IoC),也叫依赖注入( Dependency Injection)。我个人认为控制反转的意思是依赖对象 (控制权)发生转变,由最初的类本身来管理依赖对象转变为 IoC 框架来管理这些对象,使得依赖脱离类本身的控制,从而实现松耦合。 我们先来看一段代码 namespace Dao { public interface IPersonDao { void Save(); } public class PersonDao : IPersonDao { public void Save() { Console.WriteLine("保存 Person"); } } } namespace SpringNetIoC { class Program { private static void NormalMethod() { IPersonDao dao = new PersonDao(); dao.Save(); Console.WriteLine("我是一般方法"); } } } Program 必然需要知道 IPersonDao 接口和PersonDao 类。为了不暴露具体实现,我可以运用设计模式中的抽象工厂模式(Abstract Factory )来解决。 namespace DaoFactory { public static class DataAccess { public static IPersonDao CreatePersonDao() { return new PersonDao(); } } } 复制代码 namespace SpringNetIoC { class Program { private static void FactoryMethod() { IPersonDao dao = DataAccess.CreatePersonDao(); dao.Save(); Console.WriteLine("我是工厂方法"); } } } 这时,Program 只需要知道IPersonDao 接口和工厂,而不需要知道PersonDao 类。然后我们试图想象,要是有这样的工厂框架帮我们管理依赖的对象就好了,于是控制反转出来了。 一个简单的控制反转例子