AOP

      目前,由于OOP的被广泛应用的同时,也发现了OOP并不能解决现实生活中的所有问题,她可以把继承中父类和子类的这种纵向关系体现的淋漓尽致,但是,社会是一张复杂的关系网,里面的横向关系和网里节点与节点之间千丝万缕的联系却不能表达出来。所以,AOP被提出。
      在AOP提出很长一段时间内,基本上都处于一种学术研究和试验阶段。不过,近几年来,情况发生了改变。由于企业应用复杂度的不断提高,对软件开发技术提出了新的挑战。如何才能使得应用开发者仅仅关注于业务逻辑本身的开发,而不用纠缠于那些诸如安全、事务、日志等和业务逻辑无关但又是系统有效地执行业务逻辑所必须的功能呢?如果有某种技术能够把这些与具体业务逻辑无关但又是每个应用系统不可缺少的功能块,和业务逻辑做到干净的隔离,并且又能够通过一些简单的配置或者“胶水”代码,在需要时“织入”到应用系统中,那么不仅会大大提高开发效率,有效地降低软件的复杂性,而且在代码的清晰性、模块化、可测试性方面也会取得很好的提升。这正是AOP所要解决的问题,下面我将从系统分析、设计活动最为基本的目标入手,介绍一下AOP到底是什么,它解决了我们所面临的哪些困难。
      AOP (Aspect Oroented Programming, 面向切面编程) 是消除代码重复的一种方法。

      举例:假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data Class,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。

  为了完成上述并发访问同一资源的功能,需要引入锁Lock的概念,也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁Locked,用完后就立即解锁unLocked,再供其它访问类访问。
使用传统的编程习惯,我们会创建一个抽象类,所有的访问类继承这个抽象父类,如下:

abstract class Worker{

  abstract void locked();
  abstract void accessDataObject();
  abstract void unlocked();

}


 

posted @ 2008-02-18 09:59  金鱼  阅读(424)  评论(0编辑  收藏  举报