依赖注入的类是这样的:
class Obj : IObj{
private IPropObj mPropObj=null;
//注入--设置值注入方式
publc void SetPropObj(IPropObj propObj){
mPropObj=propObj;
}
}
工厂模式的类是这样的:
class Obj : IObj{
private IPropObj mPropObj=null;
//构造函数
public Obj(){
mPropObj=Factory.CreatObj<IPropObj>();
}
}
依赖注入的框架创建对象时(创建Obj时),会自动找到类的注入法SetPropObj(或者类构造函数中接口定义参数--构造注入法),创建对应的对象(IPropObj的实现类),这样你的程序中任何地方都找不到创建IPropObj的地方,只会在框架的配置文件中找到IPropObj是用哪个实现类--你想改用另一个实现类,就要在配置文件中修改。
工厂模式下,那个Factory是工厂框架的对象,如果你要改换IPropObj的实现类,那个就应该改工厂的配置文件中IPropObj的定义,或者框架指定的定义地方(你在那里可以看到IPropObj是怎样创建的)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。