『翻译.原创』第一章. 初学 AspectJ

AspectJ 介绍 

    这一部分大概的介绍一些在这一章中将用到的AspectJ的特性。这些特性都是语言的核心部分。当然,这对AspectJ来说,决不是一个完整的概述。

    接下去将用一个编辑系统来演示AspectJ的特性。下图包含了一些FigureElements,有Points也有Lines。Figure这个类作为工厂服务。还有一个Display。本章的大部分程序将围绕这个系统来进行。

    AspectJ和其他的面向方面编程的初衷,都是为了实现和解决一些传统的编程方法无法很好的解决的一些问题和关注。比如常见的应用系统中的安全策略。从本质来说,安全策略cuts across在许多的个体单位和应用模块之间。更甚,安全策略必须随着应用的发展演变,一致的应用到新的拓展部分中。另一方面,安全策略系统本身也处在一个不断变化发展的过程中。用传统的编程语言来解决类似安全之类的问题往往比较困难并且容易出错。

    类似安全之类的关注cut across在模块的各个实体之间。对OO的编程来说,基本的实体就是class。但是对于OO语言来说,crosscutting concern并不能很准确的实现,因为他们cut across在classes之间,这导致了他们的不可重用,不可细化和继承。(当然,OO有其他的模式来实现这些功能,但是往往显得比较牵强和不具备可扩展性。译者注)这样的代码将不可控的散布在程序的各个角落,很难处理。

    好比OO就是针对把通用的关注点进行模块化一样,AOP就是为了解决这类横切关注点而诞生的。而AspectJ就是针对Java所实现的AOP编程。

    AspectJ给Java新引入了一个概念,join point,以及其他几个构造:pointcuts,advice,inter-type declaration和aspects。Pointcuts和advice将动态的改变程序的流程,inter-type declaration静态的改变了类的继承结构,而aspects封装了这些新的构造。

    Joint point是程序流中定义的一个点。一个pointcut将选出特定的joint point以及这些点上的数值。Advice是在一个joint point发生时将被调用的一段代码。这些都是AspectJ的动态部分。

    AspectJ提供了多种inter-type declaration,可以让程序员静态的改变程序的结构,比如名称,类成员,以及类之间的关系。

    而aspect则是一系列横切关注点的单元模块。某种程度类似于java的类,但是更包括了pointcuts,advice和inter-type declarations。

    接下来的部分,我们将先看一下join points以及他们怎么来组成pointcuts。然后我们将看一下advice以及如何把pointcuts和advice放到aspects中,还有AspectJ的重用性,模块的继承性。最后我们还将关注如何使用inter-type declaration来处理对于类结构的横切关注。

动态连接点模型

to be continued...

阅读更多
想对作者说点什么? 我来说一句

定向爬虫:简单的模拟登录

2017年04月25日 450KB 下载

平方X翻译说明

翻译说明

pingfangx pingfangx

2016-07-19 09:58:08

阅读数:864

Aspectj驱动

2017年09月15日 1.53MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭