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

原创 2007年10月13日 22:08:00

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...

2016-2017学年第二学期C++第五章(2)

C++ 上机课参考答案 本系列文章供北京邮电大学信通院及数媒学院「C++高级程序语言设计」上机课学生参考。 2016-2017学年第二学期C++第五章(2)1511.VC++实验5.3 斐波那契数...
  • u013594828
  • u013594828
  • 2017年05月04日 11:17
  • 3594

强化学习导论(Reinforcement Learning: An Introduction)读书笔记(一):强化学习介绍

因为课题需要研究强化学习的内容,因此开始读这方面的书,Reinforcement Learning: An Introduction(Richard S. Sutton and Andrew G.Ba...
  • y954877035
  • y954877035
  • 2017年01月14日 12:43
  • 4511

(翻译)读文章--R-CNN

Rich feature hierarchies for accurate object detection and semantic segmentation的翻译文章,没有对语义分割部分进行翻译...
  • u010970698
  • u010970698
  • 2016年10月12日 21:47
  • 3670

【原创翻译】Game Engine Architecture(游戏引擎架构)第一章导论

第一章导论   When I got my first game console in 1979—away-cool Intellivision system by Mattel—t...
  • ljcduo123456gogo
  • ljcduo123456gogo
  • 2014年08月17日 16:29
  • 397

[原创翻译]《Netty in Action》英文2016年版中文翻译版·第一章:异步和事件驱动

《Netty in Action》英文2016年版中文翻译版·第一章:异步和事件驱动
  • ByfordLee
  • ByfordLee
  • 2016年04月10日 08:43
  • 1374

【原创】第一章:1.1、寻找main函数入口

逆向的第一步是什么?这要问你学习C语言的第一步是什么,很自然的,逆向的第一步当然也是大名鼎鼎“HelloWorld!”了。但是也不要因此就误认为这一节会很简单,如果你是第一次接触逆向的话,那么这一节还...
  • OSReact
  • OSReact
  • 2012年07月12日 03:48
  • 390

iOS 人机界面指南 ISUX 原创翻译(上)

  • 2014年11月10日 17:08
  • 1.2MB
  • 下载

亚普火车头翻译伪原创插件破解版注册版

  • 2010年08月19日 16:15
  • 1.41MB
  • 下载

[原创] 迷你翻译工具包括日文读音(汉字转平假名)

  • 2012年08月16日 14:49
  • 38KB
  • 下载

易学struts,本人原创。希望能给初学或晋级的朋友以帮助。

  • 2008年09月13日 09:05
  • 3.17MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:『翻译.原创』第一章. 初学 AspectJ
举报原因:
原因补充:

(最多只允许输入30个字)