锁定老帖子 主题:IOC, huh?
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-08-13
ajoo 写道 不过,我还是觉得这个误解是存在的。否则为什么那么多人对pico, spring等东西这么热心?不过是个组装技术,如果在大的项目,你可能根本就不会跟他们打任何交道,都由负责部署的人弄了。而具体的软件的ioc设计和这些容器更没有直接关系。 所以这个才是spring/pico的优点。怎么被你说起来像是缺点了。而且,spring不仅仅是一个ioc容器。 |
|
返回顶楼 | |
发表时间:2004-08-13
不错,ironically,好的设计就是你需要给予最少关心的。
是它们的优点,但是如果你要利用好这个优点就最好保持对它们的无知。 桃李不言,下自成蹊。 :) |
|
返回顶楼 | |
发表时间:2004-08-13
对了,说到生命期管理。哪位能给举个例子?我倒一时想不出来我有什么需要pico们给我做的,除了用xml配置文件定制系统。
|
|
返回顶楼 | |
发表时间:2004-08-13
gigix 写道 ajoo 写道 final class BusinessBImpl{ private final String classname; public Object f(...);{ ... return PicoContainer.newPicoInstance(classname);; } BusinessBImpl(String name);{ classname = name; } }; 显然这是一种误用。原则上,我绝对不会允许任何业务代码去调用一个ServiceLocator(或者干脆说,工厂)。拿我们现在的架构来说,我会想办法把Spring或者Pico的bean配置导出给WebWork去引用,这样就没有任何地方主动调用工厂方法了。要是大多数代码都像这样主动调用工厂,那跟自己new一个对象出来又差得了多少呢? 有个疑问,举例说明吧 假设删除dept这个逻辑,删除dept以前,要把其下的employee全部删掉.(假设存储介质不是数据库,而是xml,无法使用级联删除). 现有两个接口 DeptDao和EmployeeDao 两个实现类 DeptDaoImpl和EmployeeDaoImpl 那么在DeptDao中要得到EmployeeDao如何得到呢?不需要ServiceLocator吗? 当然你可以自己组装一层,不直接调用spring,但道理好像一样的 |
|
返回顶楼 | |
发表时间:2004-08-13
Lifecycle:
http://www.picocontainer.org/Lifecycle http://www.springframework.org/docs/reference/beans.html#beans-factory-lifecycle 实际用途: 设置一些默认值呀, 校验呀, 擦屁股呀等等, 比较适合偶这种想偷懒的人, 可以少写几行代码. spring里面有一些现成的例子, 比如与hibernate, scheduling的整合等等. |
|
返回顶楼 | |
发表时间:2004-08-13
albert_qhd 写道 有个疑问,举例说明吧 假设删除dept这个逻辑,删除dept以前,要把其下的employee全部删掉.(假设存储介质不是数据库,而是xml,无法使用级联删除). 现有两个接口 DeptDao和EmployeeDao 两个实现类 DeptDaoImpl和EmployeeDaoImpl 那么在DeptDao中要得到EmployeeDao如何得到呢?不需要ServiceLocator吗? 当然你可以自己组装一层,不直接调用spring,但道理好像一样的 真的有人不明白IoC就去用spring了, 该劈 , 偶在前面给的那个link, pico不是已经解释得很清楚了么??? spring的type2写法: public interface DeptDAO { public void deleteDept(Dept dept);; } public class DeptDAOImpl implements DeptDAO{ public void setEmployeeDAO(EmployeeDAO employeeDAO);{ this.employeeDAO = employeeDAO; } public void deleteDept(Dept dept);{ //remove dept node from xml tree ... employeeDAO.remove(dept.getEmployees(););; } } |
|
返回顶楼 | |
发表时间:2004-08-13
受教!
多谢 |
|
返回顶楼 | |
发表时间:2004-08-13
原以为自己懂,其实却不懂
|
|
返回顶楼 | |
发表时间:2004-08-13
在没有spring,pico出来之前,没有一个好的组装器,而自己的水准不够,写不出一个好的来,只好大量的使用factory模式。
现在有了这些,就可以放心大胆的使用起来了。可以这么说spring和pico极大的推动了ioc的普及。 现在发现spring是一个很好用的工具,已经遍布代码当中了,很难拆的出来了。 |
|
返回顶楼 | |
发表时间:2004-08-13
兄弟,其实还是不要用pico/spring来替代factory模式。
道理说不上来,感觉上有一点。如果大规模的取代factory的话,那个配置文件会非常难以管理。有时候配置上的错误也很难查。所以我的做法是在bean中注入factory,配置文件中搞定那些factory即可。 我现在渐渐的用groovy脚本来实现factory和对象组装的功能。道理也说不上来,纯粹的感觉。 |
|
返回顶楼 | |