锁定老帖子 主题:阿Q:革命了,革命了!(也谈IOC的好处)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-03-17
C 说 A 你我去桂林,你帮我安排一下吧!A 说没问题, :对了旅馆代理 你注射给我,我车票代理 你注射给我, 我还需要导游你介绍给我,都全了?我开始给你安排。
就说生活中的..如果由A的大老帮他订好旅馆,帮你买好飞机票,他还有什么不乐意的? 要注意, 去桂林这份差事可不是A说去就能去的,是他们老大派你去的.... |
|
返回顶楼 | |
发表时间: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可以专注于自己的事情,而不用担心那“一跳”。 这更加符合模块的单一职责原则。 |
|
返回顶楼 | |
发表时间:2005-03-17
frankensteinlin 写道 引用 C 说 A 你我去桂林,你帮我安排一下吧!A 说没问题, :对了旅馆代理 你注射给我,我车票代理 你注射给我, 我还需要导游你介绍给我,都全了?我开始给你安排。
活生生的例子阿,到时你抽象的组件阿组件的,软件不就是现实生活的抽象么!你说A应该怎么做?现实的问题啊! 首先你这个例子就是瞎掰。C找A办事,A怎么能再跟C要东西?举出这种例子就说明你压根没理解IoC是怎么一回事。 这个事情该怎么办?C说“我要去桂林”,好的,去桂林需要什么?需要机票,需要酒店的预约卡,需要漓江景区的门票。这三件东西C到哪里去找?他自己分别去买吗? 机票 = 机票代理.购买();; 门票 = 售票点.购买();; 这样吗?不对,他只要说“我要去桂林旅游,我要坐飞机并且要游漓江”: public void set机票(); public void set门票(); A(旅行社)自然会把票都拿给他。至于A从哪里买的票,C就甭管了。请问这个例子你有什么意见? |
|
返回顶楼 | |
发表时间:2005-03-17
ajoo 写道 gigix说必须不能调用容器,或者必须不能自己组装组件。也许我理解错了,我是有点不同意的。
只要这个调用容器的代码或者组装的代码不在组件内部,只要它是一个单独负责组装的模块,是不是必须要由容器自动装配倒无关紧要 我的问题,应该说得更清楚点:必须不能在业务组件中调用容器。负责业务的不能负责组装,这是底线。 |
|
返回顶楼 | |
发表时间: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 里面加。。。。。 |
|
返回顶楼 | |
发表时间:2005-03-17
frankensteinlin 写道 其次分层的系统 control -->{facade-->bo}-->dao--db.......
够了够了,讨论可以到此为止。一直说到这会才发现,原来你是压根没用过任何一个IoC框架。要不咱们先中场休息一下,您先试着用用Spring和Pico,不用太久,普通人的智商玩两小时足够。您先看看这种“分层的系统”在容器里是怎么玩的,再接着讨论。咱们都是搞技术的,别空口说白话,更别张着嘴说瞎话,行不? |
|
返回顶楼 | |
发表时间:2005-03-17
ajoo 写道 你争的不过是:
。。。。 为什么这样好?因为它让A可以专注于自己的事情,而不用担心那“一跳”。 这更加符合模块的单一职责原则。 职责单一了么,这是推卸责任!本来应该你做的你却没有作。 引用 C 说 A 你我去桂林,你帮我安排一下吧! 这里面A的职责是什么? 老板不应该事事躬亲!我交给你办至于你怎么办我就不管了 |
|
返回顶楼 | |
发表时间:2005-03-17
我看这场讨论就到此为止好了,我和ajoo都赞同IoC是一种糟糕的设计,frankensteinlin先生的设计思路是完全正确的。我想ajoo会赞同这个提议。
|
|
返回顶楼 | |
发表时间:2005-03-17
引用 够了够了,讨论可以到此为止。一直说到这会才发现,原来你是压根没用过任何一个IoC框架。要不咱们先中场休息一下,您先试着用用Spring和Pico,不用太久 不好意思 我是用过来,觉得不爽,所以来向您请教 引用 (旅行社)自然会把票都拿给他。至于A从哪里买的票,C就甭管了。请问这个例子你有什么意见? 这个例子没问题达成一致 引用 java代码: public void set机票() public void set门票() 问题在于谁来public void set机票() ?C 座在家里说set机票? |
|
返回顶楼 | |
发表时间:2005-03-17
gigix 写道 我看这场讨论就到此为止好了,我和ajoo都赞同IoC是一种糟糕的设计,frankensteinlin先生的设计思路是完全正确的。我想ajoo会赞同这个提议。
赫赫,我承认ioc 有好的地方,但是也不必说的太神了,一个框架的流行有它的道理,但不是万能的。搞一言堂作风不太好啊! 有讨论才有真理,问题总是也越讨论越清楚地么。 |
|
返回顶楼 | |