接上文
IOC 容器是一个很方便的模块管理工具。
除了可以用来注册和获取模块,IOC 容器一般还会有一个隐藏的功能,即:
注册接口模块
抽象-实现 这种形式注册和获取对象的方式是符合依赖倒置原则的。
依赖倒置原则(Dependence Inversion Principle):程序要依赖于抽象接口,不要依赖于具体实现。
好处如下:
- 接口设计与实现分成两个步骤,接口设计时可以专注于设计,实现时可以专注于实现。
- 接口设计时专注于设计可以减少系统设计时的干扰。
- 实现是可以替换的,比如一个接口叫 IStorage,其实现可以是 PlayerPrefsStorage、EasySaveStorage、EdtiroPrefsStorage,等切换时候只需要一行代码就可以切换了。
- 比较容易测试(单元测试等)
- 当实现细节(比如 PlayerPrefsStorage)发生变化时,其引用接口(比如 IStorage)类里的代码不会跟着改变,降低耦合。
- 等等