这是接上面的博文讲到的StrangeIoc的简要介绍后(参考http://blog.csdn.net/leoleocs/article/details/47664221),介绍一下extension中详细的内容,以及如何在Unity3d中使用该框架。
Extensions
该框架的应用是以extension的扩展为基础的,主要的扩展如下:
Injection extension
Injection的扩展可以说是松耦合绑定的基础,使逻辑和显示分离得以实现,正如官方文档所言,很多人将StrangeIoc这套框架成为Dependency Injection框架, 这个其实是由Injection扩展来是实现的,具体的类图如下:
Injection是利用反射来实现Injection功能,比如下面的例子代码:
public interface ISpaceship
{
void input(float angle, float velocity);
IWeapon weapon{
get;set;}
}
public class Spaceship : ISpaceship
{
public void input(float angle, float velocity)
{
//do stuff here
}
public IWeapon Weapon{
get;set;}
}
我们对接口编程,有一个飞船的接口,他拥有武器接口IWeapon,这个可能是需要其他的类去set了,这个”其他的类” 就有依赖了。
那么如何去解除这样的依赖呢? 我们可以用Injection中的扩展来解除这样的依赖,具体的做法如下:
public class Spaceship : ISpaceship
{
public void input(float angle, float velocity)
{
//do stuff here
}
//增加Inject的属性
**[Inject]**
public IWeapon Weapon{
get;set;}
}
//用下面的方法来增加绑定
injectionBinder.Bind<IWeapon>().To<PhaserGun>();
injectionBinder.Bind<ISpaceship>().To<Spaceship>();
// 下面的方法可以生成Spa