论坛首页 Java企业应用论坛

还是没有明白IoC的好处

浏览 58221 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-03-11  
age0 写道
jjx 写道

那是因为早期的mis比较原始,不考虑什么重用和定制,今年我的两个mis全部基于ioc,从两个项目的开发中,真正体会到ioc的好处,也经历了上面所说的,处处getObject到不用getobject的变化。

btw : 我用的ioc是自己用     vb6 实现的,仿spring.net context的实现,在vb6这种不特别oo的环境中,ioc会强迫你用oo去思考。如果你体会不到好处,再争论也是没有用的,因为从我的实践过程中,接受ioc相当是一场洗脑,在1个星期左右时间内,都相当困扰


实际上是你强迫自己去套ioc的概念,如果你把ioc换成factory,从factory的角度上去考虑系统设计,自然又会有另一番感悟。


我发现这个帖子实际上是无谓的争论,如果你不喜欢ioc提供的factory而一定要通过自己去做factory的话。
0 请登录后投票
   发表时间:2005-03-11  
使用容器来管理对象的生命周期,而不是用我们自己的的Factory是有很大好处的。再比如,我们要将我们的无状态的业务对象全部做为单例实现,我们只需要修改配置
singleton="true"(默认就是)就行了,而用我们自己写的Factorty.
你是要让你的class每个都实现singleton pattern还是让你的Factory在pool一个instance呢?okey,你可以说我选择后者,我忽然又说我其中的一个Service不想做成singleton,呵呵,那么你的Factory有这么智能吗?
---当然你也可以做一个象Spring足够的强大的Factory.
使用Spring当然主要不是看上他的Factory功能..

最后,一点个人的看法,使用类试spring的lightweight框架最多只能解偶,而业务代码的重用还是要靠业务建摸
0 请登录后投票
   发表时间:2005-03-11  
哎。
你们争的根本就不是ioc。


不是说找到了一个万能的工厂就叫ioc。


所谓ioc,就是说,我不管你怎么组装我,我只是直接宣称我需要什么

至于是用配置文件还是工厂,还是new,那都是跟ioc正交的另外的概念。

打个比喻,你要找女朋友,ioc的方式是直接大声喊一嗓子:我要一个20岁以下,胸围35以上的ppmm!
然后坐在家里等mm上门就是。

而你们争论的却是:
1。那个自己工作中认识的才是好mm。
2。熟人介绍的多好。范围广阿
3。你们都错了,张三婚姻介绍所最好,价钱便宜,量又足。

这三种可能都各有优势,另外也许还有很多我们暂时没有想到的匪夷所思的办法(比如,煮饭式)。对于一个ioc的设计,外围可以根据实际情况选择其中的一种甚至混合使用。
但是这三种方法和ioc根本就是两个不同范畴的概念。


说的我嘴皮子都起茧子了,还就是有人不明白,真让我灰心。
0 请登录后投票
   发表时间:2005-03-11  
其实前面gigix 包括我也已经反复强调了
你用ioc,但没有getObject或GetBean,具体的业务代码中是没有ioc概念的。将ioc用到这样了再来讨论好处会更好些些
0 请登录后投票
   发表时间:2005-03-11  
引用

我不管你怎么组装我,我只是直接宣称我需要什么。

好羡慕这种饭来张口衣来伸手的方式.好啊,大家都知道它好!

问题在于饭总要人来做阿!你不管.你的上一层也不管最后还是到fatory xml来管,
共产主义好!能不能实现呢?
0 请登录后投票
   发表时间:2005-03-11  
frankensteinlin 写道
引用

我不管你怎么组装我,我只是直接宣称我需要什么。

好羡慕这种饭来张口衣来伸手的方式.好啊,大家都知道它好!

问题在于饭总要人来做阿!你不管.你的上一层也不管最后还是到fatory xml来管,
共产主义好!能不能实现呢?

不管谁做饭都好,总之不是business object自己做,这样business object就可以随便移植。这么简单的道理都看不明白,是装傻还是抬杠?
0 请登录后投票
   发表时间:2005-03-11  
ajoo说的存概念性的IOC,
而具体使用哪个Framework时,仅仅有“我要什么“这个概念还不够。开发人员当然还是要关心 谁给我,给我的货质量怎么样..这也无可厚非...
0 请登录后投票
   发表时间:2005-03-11  
ajoo 写道
哎。

所谓ioc,就是说,我不管你怎么组装我,我只是直接宣称我需要什么



说反了吧,所谓ioc就是宣告老子就是大爷,无论你们想要什么都必须找我,不许另起炉灶。
0 请登录后投票
   发表时间:2005-03-11  
引用

不管谁做饭都好,总之不是business object自己做,这样business object就可以随便移植。这么简单的道理都看不明白,是装傻还是抬杠?

真的么?
  我需要一个组建A帮助我完成任务,但是我这个类只有方法method1需要这个组件,本来这A只定义在这个方法里面现在就要有三种选择:
1,扩大它的作用域,至少作为一个private 的变量 还得同时提供get set 方法,这似乎牺牲封装性(作用域尽量的小)。
2。做为方法的参数传入,打个比方有个check函数在某种条件下要sentmail()(这可能会调用某种组建完成这个任务,)但是为什么要上层知道有这么个组件呢?我只是要check这个userCode 阿!email 和我无关为什么还要传个mail的组件?,又是封装性被破坏了
3。可以用spring这种万能工厂阿,看又依赖它了吧?怎么new呢?肯定要调用她的接口和某些实现吧。(和自己的工厂区别不大)

就算我傻,请问有什么其它的解决方法?
0 请登录后投票
   发表时间:2005-03-11  
看出来楼上是否要表达这种意思呢?
其实,我们有时不需要:
一、
public class B{
    private C comp;
    public B(C comp){
      this.comp = comp;
    }
   public void someMethod(){
      this.comp.sayHello();
    }
}
二、
public class B{
    private C comp;
    public B(){
    }
    public setComp(C comp){
      this.comp = comp;
    }
   public void someMethod(){
      this.comp.sayHello();
    }
}
而是,需要:
三、
public class B{
    public B(){
    }
   public void someMethod(C comp){
      comp.sayHello();
    }
}

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

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