锁定老帖子 主题:还是没有明白IoC的好处
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-03-11
frankensteinlin 写道 我需要一个组建A帮助我完成任务…… 3。可以用spring这种万能工厂阿,看又依赖它了吧?怎么new呢?肯定要调用她的接口和某些实现吧。(和自己的工厂区别不大) public Client { private A _a; public void setA(A a); { _a = a; } public void doSomething(); { _a.doSomething();; } 请问哪里需要依赖Spring? |
|
返回顶楼 | |
发表时间:2005-03-11
gigix 写道 frankensteinlin 写道 我需要一个组建A帮助我完成任务…… 3。可以用spring这种万能工厂阿,看又依赖它了吧?怎么new呢?肯定要调用她的接口和某些实现吧。(和自己的工厂区别不大) public Client { private A _a; public void setA(A a); { _a = a; } public void doSomething(); { _a.doSomething();; } 请问哪里需要依赖Spring? 这就是我说的b]一[/b]得情况,你这里正好 引用 private A _a; 的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class?[
|
|
返回顶楼 | |
发表时间:2005-03-11
也可以这样
public Client { public void setA(A a); { _a = a; } public void doSomething(private A _a; ); { _a.doSomething();; } 这就是我说的第二种情况 |
|
返回顶楼 | |
发表时间:2005-03-11
code]引用:
private A _a; 的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class? 是啊,不过这不是IOC的错! 使用XML配置文件也不是IOC的错! 需要getBean也不是IOC的错! |
|
返回顶楼 | |
发表时间:2005-03-11
引用 的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class?
那你直接从参数传进去好了,不是更简单么,就像你上面写的范例代码那样。 |
|
返回顶楼 | |
发表时间:2005-03-11
VKing 写道 code]引用:
private A _a; 的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class? 是啊,不过这不是IOC的错! 使用XML配置文件也不是IOC的错! 需要getBean也不是IOC的错! 赫赫,原来是画饼充饥阿,共产主义总是美好的,不能实现不是它的错。 问题时我这个小小程序员自觉也算个搞工程的,目前还不能实现的理论好像没有什么用《似乎有点目光短浅了》 |
|
返回顶楼 | |
发表时间:2005-03-11
事物的发展总得要个过程,
难道一开始有软件这回事就有了OO呢? |
|
返回顶楼 | |
发表时间:2005-03-11
其实,我们用UML建立静态模型和动态模型之时就区分了这些情况的
|
|
返回顶楼 | |
发表时间:2005-03-11
frankensteinlin 写道 VKing 写道 code]引用:
private A _a; 的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class? 是啊,不过这不是IOC的错! 使用XML配置文件也不是IOC的错! 需要getBean也不是IOC的错! 赫赫,原来是画饼充饥阿,共产主义总是美好的,不能实现不是它的错。 问题时我这个小小程序员自觉也算个搞工程的,目前还不能实现的理论好像没有什么用《似乎有点目光短浅了》 如果你的每个class都是这样,即“只有一个方法需要使用其他组件”,自然没话说,IoC是多余的。 话又说回来,如果设计成“只有一个方法需要使用其他组件”,恐怕你的OOD很成问题。 |
|
返回顶楼 | |
发表时间:2005-03-11
gigix 写道 引用 的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class?
那你直接从参数传进去好了,不是更简单么,就像你上面写的范例代码那样。 对传进去;只是将问题推迟解决了 原来 public BO{ public void checkUser(String userCode); { if (###);{ A _a= new A();; _a.sentEmail();; } } // client just want to check user . // he do not know whether should sent any mails client : boInstance.check("001"); 现在 public BO{ // client just want to check user . // he do not know whether should sent any mails //? why need I sent public void checkUser(String userCode,A a); { if (###);{ A _a= new A();; _a.sentEmail();; } } // client just want to check user . // he do not know whether should sent any mails client : //init component A A a= new A();; // why need A ? the client will confused boInstance.check("001",a);; |
|
返回顶楼 | |