对象创建从农业社会到共产主义的发展
一、农业社会
最传统的创建对象的模式,每个需要使用工具的人都必须自己造一把工具,在java中的表现为调用者手动创建被调用者。
例如,在Person类中要使用Tool类,要使用一下语句:
Tool t = new Tool();
缺点:通过new创建被调用的实例,耦合度过高。
二、工业社会
进入了工业社会,随着工厂的出现,工具是由工厂生产,使用者只需要说出需要工具的名称给工厂,工厂即提供相应的工具。
在工厂类中定义方法:
1 class Factory{
2
3 public Object getInstance(String name){
4 if(name == "ax")
5 return new Ax();
6 else if(name == "knife")
7 return new Knife();
8 else
9
10 }
11
12 }
2
3 public Object getInstance(String name){
4 if(name == "ax")
5 return new Ax();
6 else if(name == "knife")
7 return new Knife();
8 else
9
10 }
11
12 }
然后,在调用者中使用以下代码,即可得到斧子:
1 Factory f = new Factory();
2 Knife f = (Knife)f.getInstance("knife");
2 Knife f = (Knife)f.getInstance("knife");
分析:在工厂设计模式中,调用者只需定位工厂,无需管理具体的实现。可以面向接口编程,让调用者和被调用者解耦。
三、共产主义-基于IoC的实现
来到共产主义,使用者甚至无需定位工厂,只要在家里说需要什么工具,然后坐等社会提供即可。
在java中即Spring依赖注入的核心思想。
过程:在调用者类中,只需要声明需要的工具(说自己需要什么),然后由Bean容器通过java的反射机制,注入工具到调用者。实例之间的依赖关系有容器提供和管理。