对依赖注入的一点想法
对于spring中的IOC,大家都知道这个仅仅是对属性的依赖注入,也就是这种方式解决了类与类之间的依赖问题。现在大家的讨论好像都集中在域模型的是否充血的问题上,就是说是否给模型加上行为(业务方法)。这样我就想有没有一种方式可以实现方法的依赖注入的问题,这样是否就可以更大的解耦了呢?
初步想法是这样的:
public class A{
String name;
IBehavior behavior;
public doA(){
behavior.doA(this.name);//委托给行为类
}
public doB(){
behavior.doB(this.name);
}
}
public interface IBehavior{
public doA(String aparam);
public doB(String aparam);
}
public abstract class AbstractBehavior implements IBehavior{
// 默认实现
}
自己通过extends AbstractBehavior 类或者implements IBehavior 也可以实现自己特定的要求再通过spring的IOC把依赖关系注入,通过改变这个注入的类可以改变类A的行为
调用就需要:context.getBean("a").doA();
不过现在觉得现在这样的实现有种画蛇添足的感觉!
不知道大家对方法的注入有什么想法?不知道能否直接实现方法的注入而不是通过这这样的间接的方式!
PS:我看Jdonframework对于struts 中的几个saveAction,updateAction等的处理好像就是通过配置来实现方法的委托的,好像这个也可以说是方法的注入吧。
[该贴被pliaozrlp于2009-06-18 16:39修改过]