关于IoC的介绍
欢迎大家拍装
(转自我的java博客
文章地址:http://www.blogjava.net/cmzy/archive/2008/07/15/214971.html)
IoC即Inversion of Control,控制反转。它不是一种编程技术,而是一种设计模式。利用它,可以促进应用程序组件或类之间的松散耦合。一般的情况下,我们需要自己创建对象的实例,比如在Computer类中创建一个打印机的实例:
1Printer printer = new DellPrinter();//创建一个戴尔打印机的实例 如果使用IoC,我们则不必再自己创建类的实例,而是将创建对象的任务交给IoC容器去做。这样,我们在使用某个对象的时候,就可以直接从容器中获取一个实例。就像一个好莱坞的原则一样“Don't call me.I'll callyou!”,容器会在合适的时候创建它。我们就像不必考虑对象的销毁一样,也可以不必考虑对象的创建,这就是控制反转。
这样做有什么好处呢?在上面的例子中,我们创建为我们的电脑安装了一个戴尔打印机(创建一个戴尔打印机类的实例)。可是如果有一天,我们系统要升级了,需要使用惠普的打印机。这时,由于我们把打印机已经“固化”到电脑中了(打印机和电脑的耦合很高),要更换打印机,就不得不先拆开电脑,从主板中卸下打印机,再安装新的打印机(修改Computer类的源代码,然后重新编译,重新部署)。可以看到,这是一个计算机专家才能完成的任务,对于一个对计算机不是很了解的人来说,这将会是一场噩梦。那么如何解决这个问题呢?办法之一就是我们把打印机抽象成一个接口:
1 public interface Printer {
2 public void print();
3 }
这样各个厂商在生产打印机的时候,就只是需要实现这个接口所定义的功能就行了。就像我们在电脑上做一个专门的打印机模块,需要的时候卸掉原来的模块,再安装上新型号就的打印机可以了,前提是新的模块必须和以前的有一样的 ..
访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容