手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

我理解的IoC和AOP

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

由于,我自己也只是看过一些这方面的文章,没有实作过,所以在这篇文章里面将不会设计到太多实现上的细节,基本上都是一些概念上和我个人理解的东西。

这两个概念基本上是一个设计层的概念,主要讲的就是怎么去分离关注,用面向对象的话说,就是怎么把职责进行分离。而这两个模式,我个人认为都有一个共同点,就是变以前的主动为被动,而我认为,这种改变可能也是将来面向对象发展的一个趋势。

首先说说什么叫主动。写过面向对象程序的人都知道,面向对象与面向过程的区别就是,面向对象是由一大堆对象组成的,对象通过协作完成面向过程中的任务。假设现在有对象AB,那么当A需要使用B中的方法时,那么在A内部,就会有有一个对B方法的调用,这种调用就称为主动调用。代码大概会如下:

public class A{

B b;

public void methodA(){

b.methodB();

}

}

这里为了下文解释方便,我增加了一个调用点的定义,调用点就是调用发生的地方。也就是上面

b.methodB()中的b

理解了什么叫主动之后,我想就先介绍什么叫IoCIoC的全称这里就不说了,他的字面意思就是控制反转。在上面的代码当中,由于A调用了B的方法,因此就形成了一个AB的依赖,这本身并没有什么问题。但是OO的思想是希望我们基于接口编程,而不是基于实现编程。因此,系统设计将不止是原有的AB,而需要变成IAIBAB,其中IAIB是接口,AB是对应的实现类,然后为了使得A中现在对B的实现依赖变成对接口的依赖,代码应该变成这样。

public class A implements IA{

IB b;

public void methodA(){

b.methodB();

}

}

这里虽然我们是基于接口编程了,但大家知道,在这中间,我们需要有一个步骤把b指向一个IB的实现类B,这个怎么做,就是IoC要做的事情,这里就不细说了。但简单来说,没有IoC

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!