StrangeIoc
依赖注入
1. 什么是依赖关系:
-
依赖可以被认为是一个对象想要执行其功能,需要另外一个对象的相应功能。
-
假设A类的变化引起了B类的变化,则说明B类依赖于A类。
-
uml图(Diver依赖于Car):
public class Driver
{
public void drive(Car car)
{
car.move();
}
……
}
public class Car
{
public void move()
{
......
}
……
}
- 依赖关系有如下三种情况:
1、A类是B类中的(某中方法的)局部变量;
2、A类是B类方法当中的一个参数;
3、A类向B类发送消息,从而影响B类发生变化;
2.什么是组合关系:
-
组合关系也是整体与部分的关系,但是整体与部分不可以分开。
-
组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。即成员类的存在依赖于整体类
-
uml图:
public class Head
{
private Mouth mouth;
public Head()
{
mouth = new Mouth();
}
……
}
public class Mouth
{
……
}
3.Unity的框架
Unity的框架是基于组合,没有入口控制
4.反转控制IOC
- 单件最大的问题:
- 不能设计成反转控制方式
- 存在内存泄漏
- 依赖注入 = 不要直接绑定
- 例子:
class 宇宙飞船
{
if (InputMana.getbutton(键盘空格))
{
Fire(