`
byduke
  • 浏览: 31631 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论
阅读更多
    想写点AOP的东西,但是不知道从何说起,因为可写的实在是太多了。先说说什么是AOP吧。AOP是面向切面编程,也有叫面向方面编程,不过我觉得第一种叫法更加切合实际一些。
听起来似乎很抽象,其实它很好理解。

     首先说说OOP,大家都知道的OOP叫面向对象编程。它的思想经常是体现在当两个以上的类或抽象类或接口有共有的属性或者方法时,把他们向上抽象,形成一个新的类或抽象类或接口。比如说,猩猩类和人类都有年龄和性别的属性,同时都有吃东西的方法,那么这两个类就可以向上抽象为一个动物类,这个类拥有年龄和和性别的属性,同时还有吃东西的方法。然后猩猩类和人类都继承动物类,OOP往往是这样去描述一些事物,说白了,它往往是一个向上抽象的过程,体现出来的是类和对象的宏观关系。

     下面说AOP,大家想一个这样的例子,比如我们常见的JDBC操作,对于两个方法,一个是queryAll,另外一个是queryByPage,两个方法都是标准的JDBC操作,创建驱动,建立连接,创建STATEMENTS,创建RESULT,转化对象和关系型数据,关闭创建的对象。

     对于queryAll和queryByPage两个方法都是如是操作,这样我们会发现,这两个方法惟独只有中间的转化对象和关系型数据是不同的,其他的几乎都一个样,如果我们希望类似使用OOP的形式,把其他相同的部分提取出来,不需要进行重复的操作,那么使用OOP的思想,想要向上抽象几乎是不可能的了,因为它们放生在方法内部,直接作用于方法体内,OOP只能对于那些类体内的元素进行向上抽象。不过大家可以想象一下,如果向上抽象不行的话,我们不妨考虑一下,如果把两个方法并排放置,进行横向切割,沿转化对象和关系型数据这个位置进行上切割和下切割,然后把切割出去的模块横向抽取,形成2个单独的方法,然后再根据需要把他们有机的织入到切割前的位置,这样就可以完以前一样的步骤,而且单独分出来的东西还可以再根据需要织入到其他的转化当中。这就是AOP的主要思想,也是一种横切思想,一种面向切面编程的思想。其实有很多我们常遇见的情况都可以依靠它来解决,比如说性能监测和事物的管理等。

    今天先写这些吧!!呵呵,改天有时间继续写。
    本人QQ:84627476 小平头爱小狗 有兴趣的可以加QQ一起讨论一下
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics