qq建设网站,app和网站开发,软件应用,网络规划设计师的成就目录构造方法注入#xff08;constructor injection#xff09;setter 方法注入#xff08;setter injection#xff09;接口注入#xff08;interface injection#xff09;三种方式比较构造方法注入#xff08;constructor injection#xff09;
构造方法中声明依赖…
目录构造方法注入constructor injectionsetter 方法注入setter injection接口注入interface injection三种方式比较构造方法注入constructor injection
构造方法中声明依赖对象的参数列表让IoC容器知道它需要哪些依赖对象。
此方法比较直观对象构造完成后即进入就绪状态可以马上使用。
public FXNewsProvider(IFXNewsListener newsListner,IFXNewsPersister newsPersister)
{this.newsListener newsListner;this.newPersistener newsPersister;
}setter 方法注入setter injection
只需要为依赖对象所对应的属性添加setter方法就可以通过setter方法将相应的依赖对象设置到被注入对象中。
比构造方法注入宽松一些可以在对象构造完成后再注入。
public class FXNewsProvider
{private IFXNewsListener newsListener;private IFXNewsPersister newPersistener;public IFXNewsListener getNewsListener() {return newsListener;}public void setNewsListener(IFXNewsListener newsListener) {this.newsListener newsListener;}public IFXNewsPersister getNewPersistener() {return newPersistener;}public void setNewPersistener(IFXNewsPersister newPersistener) {this.newPersistener newPersistener;}
}接口注入interface injection
被注入对象如果想要IoC Service Provider为其注入依赖对象就必须实现某个接口。这个接口提供一个方法用来为其注入依赖对象。IoC Service Provider最终通过这些接口来了解应该为被注入对象注入什么依赖对象。
接口注入比较死板和繁琐是现在不甚提倡的一种方式“退役”选手。
三种方式比较
注入方法优缺点构造方法注入构造方法注入的优点是当对象构造完成之后就能够处于就绪状态能够提供使用而缺点在于如果对象太多或者某个对象的参数多而复杂的话构造方法就很繁琐并且维护也是有较大的困难setter方法注入主要体现在性能方面因为方法可以自定义命名描述也就更加人性化了可以有默认值设置。不足的地方可能就是不能立即使用该对象接口注入入侵性太强如果需要注入依赖对象被注入对象必须声明和实现另外的接口。不提倡这种方法