
1 raincious 2015-02-11 14:50:36 +08:00 非Java小能手,可能立即的不对,但是你是不是在说这个?: http://stackoverflow.com/questions/871405/why-do-i-need-an-ioc-container-as-opposed-to-straightforward-di-code |
2 raincious 2015-02-11 14:51:16 +08:00 - 立即 + 理解 |
3 jy04149886 OP @raincious 太好了,谢谢 |
4 tabris17 2015-02-11 15:17:29 +08:00 你在说IoC容器么? IoC容器获取对象,获取对象后才能“对象的方法调用”啊,两码事儿 |
5 jy04149886 OP @tabris17 直接new,不注入 |
6 tabris17 2015-02-11 15:31:02 +08:00 @jy04149886 用IoC就是咱们不用知道对象到底怎么生成的,有些对象是new的,但是有些对象要用build或者factory模式生成。有些对象需要依赖别的服务或组件。而使用IoC容器可以让调用者无需关心这些细节。 比如一个dbconnection对象,你直接new需要传递ip端口用户名密码,你要知道从哪里去读取这些信息,到底是配置文件还是全局变量或者是常量。而是用IoC就只要把这些信息写入配置文件就可以了 |
7 jy04149886 OP @tabris17 这个我知道,比如数据库连接对象通过注入取得是很方便的,但是一个action调用它的service对象通过依赖注入来实现,我感觉好烦琐,但是现在的java三层架构的开发都是这种模式的吧。。。。是不是对这个模式使用的有点不合适。。。 |
8 tabris17 2015-02-11 15:38:26 +08:00 @jy04149886 你就姑且认为是一种DI的美学吧…… |
9 tabris17 2015-02-11 15:40:04 +08:00 或者说“用new太low了” |
10 jy04149886 OP @tabris17 好吧。。。 |
11 hcymk2 2015-02-11 16:00:24 +08:00 |
12 windyboy 2015-02-11 16:01:31 +08:00 注入的优势在于,你只告诉接口你想干什么,至于最后这个事情怎么干,谁来干,可以执行的时候才决定 |
13 fangzhzh 2015-02-11 16:04:38 +08:00 via Android 注入方便测试 |
14 jy04149886 OP @windyboy 这机制确实很强大,不过超级大项目才体现优势吧。。。做个管理软件什么的,我看貌似没什么必要。。。 |
15 jy04149886 OP @fangzhzh 貌似现在都用注解来实现了,貌似没有xml那么强大? |
16 invite 2015-02-11 16:13:03 +08:00 何必纠结什么模式呢?怎么方便怎么来啊。 |
17 raincious 2015-02-11 16:13:18 +08:00 @jy04149886 看你的项目到底要规范化到什么程度。 一般来说通用的代码除非出于冗余性以及组建依赖的考虑,一般还是抽出来做成可复用的流程。使用IoC方法可以轻易地做到这一点,而且可以更加灵活的进行加载(比如你可以决定是否缓存某个对象的实例,来实现比如复用数据库连接的实例),代码量可以更少。 反过来说如果你的代码里都是直接new出来,首先是维护不方便,如果这些被new的组件有更新导致调用方式改变(比如拆分了之类),那么可能需要改的地方就太多了,不便维护。而且代码一长,维护就相对更困难。 代码总归还是给人看的。 |
18 caixiexin 2015-02-11 16:13:36 +08:00 via Android 解耦,模块化,当然可以不用,自己决定:) 设计模式的问题也争论挺久了 |
19 6IbA2bj5ip3tK49j 2015-02-11 17:11:09 +08:00 团队作战,写好接口,各写各的。 |
21 kedron 2015-02-11 17:57:30 +08:00 注入的出发点就是为了解耦。至于为什么要解耦,怎么实现解耦的,解耦是什么意思。楼主可以顺着这个思路继续学习。 多说点,至于你现在做的东西要不要采用注入,还需要你自己学习之后结合实际情况,具体分析。很多架构、模式、框架不是说什么地方都要用。但是不用,是因为自己知道这个东西,分析之后决定不用。而不是因为自己啥也不懂,眼前怎么省事怎么来。 |
22 kedron 2015-02-11 18:01:40 +08:00 楼主这个问题一点都不傻逼,反而是有些回答…… |
24 rikeinei 2015-02-18 16:55:03 +08:00 使用注入模式比使用对象的方法调用,有没有优势主要看面对的情况,直接New不见得坏,但是注入也不见得好。 目前项目因为太庞大,平行开发修改频繁,用的注入,大家为了不影响别人开发都是先写接口... |
25 funky 2015-02-23 14:13:38 +08:00 老问题了。凡事在没有全面了解之前慎用。 |
26 sunnysign 2015-04-03 14:44:17 +08:00 我觉得python不错,用过之后就觉得java确实太麻烦,杂乱,不美好,不可爱,没有掌控感。 |