论坛首页 Java企业应用论坛

还是没有明白IoC的好处

浏览 58224 次
精华帖 (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?
0 请登录后投票
   发表时间: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?[
0 请登录后投票
   发表时间:2005-03-11  
也可以这样
public Client { 
    public void setA(A a); { 
    _a = a; 
  } 
  public void doSomething(private A _a; 
); { 
    _a.doSomething();; 
  } 

这就是我说的第二种情况
0 请登录后投票
   发表时间:2005-03-11  
code]引用:
private A _a;
的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class?
是啊,不过这不是IOC的错!
使用XML配置文件也不是IOC的错!
需要getBean也不是IOC的错!
0 请登录后投票
   发表时间:2005-03-11  
引用
的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class?

那你直接从参数传进去好了,不是更简单么,就像你上面写的范例代码那样。
0 请登录后投票
   发表时间:2005-03-11  
VKing 写道
code]引用:
private A _a;
的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class?
是啊,不过这不是IOC的错!
使用XML配置文件也不是IOC的错!
需要getBean也不是IOC的错!


赫赫,原来是画饼充饥阿,共产主义总是美好的,不能实现不是它的错。
问题时我这个小小程序员自觉也算个搞工程的,目前还不能实现的理论好像没有什么用《似乎有点目光短浅了》
0 请登录后投票
   发表时间:2005-03-11  
事物的发展总得要个过程,
难道一开始有软件这回事就有了OO呢?
0 请登录后投票
   发表时间:2005-03-11  
其实,我们用UML建立静态模型和动态模型之时就区分了这些情况的
0 请登录后投票
   发表时间:2005-03-11  
frankensteinlin 写道
VKing 写道
code]引用:
private A _a;
的作用域是整个class,但是如果我只有一个方法中需要 组件 A 呢,为什么要把它的作用域提高到整个class?
是啊,不过这不是IOC的错!
使用XML配置文件也不是IOC的错!
需要getBean也不是IOC的错!


赫赫,原来是画饼充饥阿,共产主义总是美好的,不能实现不是它的错。
问题时我这个小小程序员自觉也算个搞工程的,目前还不能实现的理论好像没有什么用《似乎有点目光短浅了》


如果你的每个class都是这样,即“只有一个方法需要使用其他组件”,自然没话说,IoC是多余的。

话又说回来,如果设计成“只有一个方法需要使用其他组件”,恐怕你的OOD很成问题。
0 请登录后投票
   发表时间: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);;


0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics