论坛首页 Java企业应用论坛

阿Q:革命了,革命了!(也谈IOC的好处)

浏览 29523 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-03-17  
C 说 A 你我去桂林,你帮我安排一下吧!A 说没问题, :对了旅馆代理 你注射给我,我车票代理 你注射给我, 我还需要导游你介绍给我,都全了?我开始给你安排。

就说生活中的..如果由A的大老帮他订好旅馆,帮你买好飞机票,他还有什么不乐意的?

要注意, 去桂林这份差事可不是A说去就能去的,是他们老大派你去的....
0 请登录后投票
   发表时间:2005-03-17  
你争的不过是:
A:
  B b;
  A();{
    b = new B();;
  }

C:
  new A();;




A:
  B b;
  A(B b);{
    this.b = b;
  }

C:
  new A(new B(););;


而已。

难道前者就比后者少了所谓的那“最后一跳”吗?

工作都一样,只不过ioc把那一跳的责任从A挪到了A的外面(比如C或者容器)


为什么这样好?因为它让A可以专注于自己的事情,而不用担心那“一跳”。

这更加符合模块的单一职责原则。
0 请登录后投票
   发表时间:2005-03-17  
frankensteinlin 写道
引用
C 说 A 你我去桂林,你帮我安排一下吧!A 说没问题, :对了旅馆代理 你注射给我,我车票代理 你注射给我, 我还需要导游你介绍给我,都全了?我开始给你安排。

活生生的例子阿,到时你抽象的组件阿组件的,软件不就是现实生活的抽象么!你说A应该怎么做?现实的问题啊!


首先你这个例子就是瞎掰。C找A办事,A怎么能再跟C要东西?举出这种例子就说明你压根没理解IoC是怎么一回事。

这个事情该怎么办?C说“我要去桂林”,好的,去桂林需要什么?需要机票,需要酒店的预约卡,需要漓江景区的门票。这三件东西C到哪里去找?他自己分别去买吗?
机票 = 机票代理.购买();;
门票 = 售票点.购买();;

这样吗?不对,他只要说“我要去桂林旅游,我要坐飞机并且要游漓江”:
public void set机票();
public void set门票();

A(旅行社)自然会把票都拿给他。至于A从哪里买的票,C就甭管了。请问这个例子你有什么意见?
0 请登录后投票
   发表时间:2005-03-17  
ajoo 写道
gigix说必须不能调用容器,或者必须不能自己组装组件。也许我理解错了,我是有点不同意的。
只要这个调用容器的代码或者组装的代码不在组件内部,只要它是一个单独负责组装的模块,是不是必须要由容器自动装配倒无关紧要

我的问题,应该说得更清楚点:必须不能在业务组件中调用容器。负责业务的不能负责组装,这是底线。
0 请登录后投票
   发表时间:2005-03-17  
引用

DispatchServlet调用Container.getObject("bName")

首先你的DispatchServlet依赖于所谓的container!承认吧!

其次分层的系统 control -->{facade-->bo}-->dao--db.......
用你的方法DispatchServlet是否责任很重大,无所不知,要用到那个facade,bo,dao........并且还要把它一一装配好!问题是 control 为什么要知道这个action 要用到那些 dao?如果下次增加了呢?是否要从头改到尾?
增加使用一个dao 要在bo里加,facade里面夹 control 里面加。。。。。
0 请登录后投票
   发表时间:2005-03-17  
frankensteinlin 写道
其次分层的系统 control -->{facade-->bo}-->dao--db.......

够了够了,讨论可以到此为止。一直说到这会才发现,原来你是压根没用过任何一个IoC框架。要不咱们先中场休息一下,您先试着用用Spring和Pico,不用太久,普通人的智商玩两小时足够。您先看看这种“分层的系统”在容器里是怎么玩的,再接着讨论。咱们都是搞技术的,别空口说白话,更别张着嘴说瞎话,行不?
0 请登录后投票
   发表时间:2005-03-17  
ajoo 写道
你争的不过是:
。。。。

为什么这样好?因为它让A可以专注于自己的事情,而不用担心那“一跳”。

这更加符合模块的单一职责原则。


职责单一了么,这是推卸责任!本来应该你做的你却没有作。
引用

C 说 A 你我去桂林,你帮我安排一下吧!

这里面A的职责是什么?

老板不应该事事躬亲!我交给你办至于你怎么办我就不管了
0 请登录后投票
   发表时间:2005-03-17  
我看这场讨论就到此为止好了,我和ajoo都赞同IoC是一种糟糕的设计,frankensteinlin先生的设计思路是完全正确的。我想ajoo会赞同这个提议。
0 请登录后投票
   发表时间:2005-03-17  
引用

够了够了,讨论可以到此为止。一直说到这会才发现,原来你是压根没用过任何一个IoC框架。要不咱们先中场休息一下,您先试着用用Spring和Pico,不用太久

不好意思 我是用过来,觉得不爽,所以来向您请教


引用

(旅行社)自然会把票都拿给他。至于A从哪里买的票,C就甭管了。请问这个例子你有什么意见?

  这个例子没问题达成一致
引用

java代码: 

public void set机票()
public void set门票()


问题在于谁来public void set机票() ?C 座在家里说set机票?
0 请登录后投票
   发表时间:2005-03-17  
gigix 写道
我看这场讨论就到此为止好了,我和ajoo都赞同IoC是一种糟糕的设计,frankensteinlin先生的设计思路是完全正确的。我想ajoo会赞同这个提议。


赫赫,我承认ioc 有好的地方,但是也不必说的太神了,一个框架的流行有它的道理,但不是万能的。搞一言堂作风不太好啊!

有讨论才有真理,问题总是也越讨论越清楚地么。
0 请登录后投票
论坛首页 Java企业应用版

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