Chinaunix首页 | 论坛 | 博客
  • 博客访问: 484083
  • 博文数量: 1496
  • 博客积分: 79800
  • 博客等级: 大将
  • 技术积分: 9940
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 13:22
文章分类

全部博文(1496)

文章存档

2011年(1)

2008年(1495)

我的朋友

分类:

2008-09-09 13:23:17

  Spring的功能是很强大的,在其“绝不发明自己认为好的轮子,而只发明自己认为不好的轮子”的指导思想下,通过充分实践了“一切实事求是、‘循证架构’的工作方式”的理论,基本上把轻量级的J2EE应用框架(如ORM、MVC等)进行了整合,并构架了一些常用的功能(如DAO),形成了一个功能强大的J2EE轻量级企业应用框架。
  然而,或许是大家对Spring掌握得还不透彻的缘故吧,看到很多软件企业中用到的Spring功能,基本上大多数都只是用其IOC功能,有时候附带用了其中的AOP事务管理功能。
  IOC及AOP虽然不是Spring首创,然而其在这两块都是做得很不错的,应该说整个Spring框架就是围绕着其IOC实现及AOP实现架设起来的。我想,深入挖掘IOC、AOP以及Spring中的实现,使用等,对于初学者帮助会非常大,因此,从本期开始,大峡的《玩玩Spring系列》将伴随大家一起走进IOC及AOP的世界。
  由于本人水平有限,文中难免有很多不足甚至错误之处,还请各位朋友不吝批评指教。
--------------------next---------------------
一、IOC简介
  IOC-全称Inversion of Control,中文解释:控制反转。另外,IOC又称DI(全称)Dependency Injection,中文解释:依赖注入。
  呵呵,这些名词搞得有点像学古文的味道哈。很多大师还都说IOC中有一个著名的好莱坞理论:你呆着别动,到时我会找你。由于本人未到过好莱坞参加过社会实践,因此,这句话理解有点困难。
  IOC是一种新的设计模式,即IOC模式,系统中通过引入实现了IOC模式的IOC容器,即可由IOC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分开。其中一个特点就是通过文本的配件文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码。
  当前比较知名的IOC容器有:Pico Container、Avalon 、Spring、JBoss、HiveMind、EJB等,国内由板桥里人负责的国产开源项目Jdon框架,也是具有IOC容器功能(由于没来得及认真研读其源码,似乎jdon中IOC部份是调用Pico的IOC容器功能来实现的)。
  在上面的几个IOC容器中,轻量级的有Pico Container、Avalon、Spring、HiveMind等,超重量级的有EJB,而半轻半重的有容器有JBoss,Jdon等。
  
  IOC究竟是什么?IOC是如何产生的?用在什么场合?为什么我们以前不用IOC,而现在要用IOC?“物有本末,事有终始”,为了更加透彻的理解这一问题,大峡打算从自己所理解的面向对象(OO)设计及编程发展历程来进行分析,也许这样能让IOC的初学者更加了解IOC的发展的前因后果,争取做到“知其然,知其所以然,使其然!”。
  若大家等不急了,就直接百度一下有关IOC的其它文章,这方面国内很多先驱们已经作了很多介绍。如冰云的《IOC详解》、板桥里人的设计模式及IOC理论等。
--------------------next---------------------
  记得曾经看《Think in 》最早版本的时候,里面有这么一句让人振奋话:一切都是对象。这时我们OO编程的核心是围绕着面向对象编程的三个特性即“继承”、“封装”、“多态”来展开的。
2.1 封装
  那时我们学会了对现实就的事物及软件模型进行了抽象。比如要描述一只猫,那么这支猫应该有“颜色”、“重量”、“公母”、“脾气”、“出生日期”等属性,另外还有“跑”、“吃”、“叫”、“猫捉老鼠”等方法。如Java代码来表示,大致就是如下:
public Class Cat
{
private String color;//颜色
private String weight;//重量
private String sex;//公母
private String temper;//脾气
private String birthday;//出生日期
private void run ();//跑
private void eat (Food food); //吃(食物)
private void shout(int type);//叫(类别)
private boolean chase(Mice mice);//猫捉老鼠
}
--------------------next---------------------

阅读(127) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~