该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-03
dvaknheo 写道 还是不能理解 spring 的作用
为什么不是这样呢 public static void main(String[] args) { Animal animal = new Animal(); animal.say(); } 首先Animal类是个接口,new Animal() ??, 我想你是想问为什么不是 Animal animal = new Cat(); animal.say(); 因为say()方法内容为 public void say() { System.out.println("I am " + name + "!"); } 而name这个属性是未知的所以将打印出, I am null! 这显然不是我们想要的结果啊! |
|
返回顶楼 | |
发表时间:2009-07-04
为啥牛人这么多哇~~~
|
|
返回顶楼 | |
发表时间:2009-07-04
最后修改:2009-07-04
4年前用vb6整了一个spring framework 基础部分实现,现在非常痛苦,每次修改用那个框架的东西时,要面对一大堆xml
|
|
返回顶楼 | |
发表时间:2009-07-04
自己造轮子,自己就得维护轮子
不过学习一些原理还是好的 |
|
返回顶楼 | |
发表时间:2009-07-04
谢谢楼主,刚开始接触Spring 也正在慢慢理解的过程。
看了这篇文章,受益匪浅啊 |
|
返回顶楼 | |
发表时间:2009-07-04
dvaknheo 写道 还是不能理解 spring 的作用
为什么不是这样呢 public static void main(String[] args) { Animal animal = new Animal(); animal.say(); } 推荐看这个 http://www.martinfowler.com/articles/injection.html 和这个 http://en.wikipedia.org/wiki/Dependency_injection 里面都有说明为什么需要DI, 还有直接new Cat();的缺点是什么。 |
|
返回顶楼 | |
发表时间:2009-07-04
martinfans 写道 dvaknheo 写道 还是不能理解 spring 的作用
为什么不是这样呢 public static void main(String[] args) { Animal animal = new Animal(); animal.say(); } 推荐看这个 http://www.martinfowler.com/articles/injection.html 和这个 http://en.wikipedia.org/wiki/Dependency_injection 里面都有说明为什么需要DI, 还有直接new Cat();的缺点是什么。 补充说说我的愚见。 1) 直接创建对象依赖程度过高。 先说什么是依赖吧。 A 用到 B, A 就依赖 B 象这样 public class A{ private B b = new BImpl(); public void go(){ if(b.go()){ }; } private void go(){ //do something } } 假如 B的构造方法需要参数,象这样 public B(String arg) 那么A 也得变。应该是配置优于编码。 2)不容易测试 假如B依赖于其他很多的类才能得到正确的结果,比如依赖于数据库连接,Web Service,或者部署在其他机器上的组件,那么测试A是一件很痛苦的事情。 我们为了做单元测试,有时候需要简化一些东西。比如,假设B返回是我们想要的结果,进而测试A的行为是不是符合我们的要求。 这时候我们需要做Mock,象这样, public MockB implements B{ public boolean go(){ return true; } } 这个类模拟返回true的情况, 问题是,我如何替换掉BImpl呢? 具体的请看这里 http://code.google.com/p/google-guice/downloads/list -> Java on Guice - Developer Day Slides.pdf 不对之处,请大家批评指正。 另:楼主的东西很好,支持深入研究。 |
|
返回顶楼 | |
发表时间:2009-07-04
对正在学习spring的新手很有帮助!谢谢!
|
|
返回顶楼 | |
发表时间:2009-07-05
有点高深啊
|
|
返回顶楼 | |
发表时间:2009-07-06
dvaknheo 写道 还是不能理解 spring 的作用
为什么不是这样呢 public static void main(String[] args) { Animal animal = new Animal(); animal.say(); } 首先理解一下工厂模式~~ |
|
返回顶楼 | |