面向方面编程(aspect-oriented programming,AOP)是一种编程范式,旨在提高模块化允许横向关注点的分离。该范式以一种成为方面(Aspect)的语言构造为基础,切面是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点(Crosscutting Concern)。

方面的概念源于对面向对象的程序设计的改进,但并不局限于此,它还可以用来改进传统的函数,与侧面相关的编程的概念还包括元对象协议,主题(Subject),混入(Mixin)和委托。

关键词:

  • 关注点(Concern):对软件工程有意义的、小的、可管理的、可描述的软件组成部分,一个关注点通常只同一个特定概念或目标相关联。
  • 主关注点(Core Concern):一个软件最主要的关注点。
  • 关注点分离(Separation of Concerns,SOC):标识、封装和操纵只与特定概念、目标相关联的软件组成部分的能力,即标识、封装和操纵关注点的能力。
  • 方法(Method):用来描述、设计、实现一个给定关注点的软件构造单位。
  • 横切(Crosscut):两个关注点相互横切,如果实现它们的方法存在交集。
  • 支配性分解(Dominant Decomposition):将软件分解成模块的主要方式。传统的程序设计语言是以一种线性的文本来描述软件的,只采用一种方式(比如:类)将软件分解成模块;这导致某些关注点比较好的被捕捉,容易进一步组合、扩展;但还有一些关注点没有被捕捉,弥散在整个软件内部。支配性分解一般是按主关注点进行模块分解的。
  • 横切关注点(Crosscutting Concerns):在传统的程序设计语言中,除了主关注点可以被支配性分解方式捕捉以外,还有许多没有被支配性分解方式捕捉到的关注点,这些关注点的实现会弥散在整个软件内部,这时这些关注点同主关注点是横切的。
  • 方面(Aspect):在支配性分解的基础上,提供的一种辅助的模块化机制,这种新的模块化机制可以捕捉横切关注点。

从主关注点中分离出横切关注点是面向方面的程序设计的核心概念。分离关注点使得解决特定领域问题的代码从业务逻辑中独立出来,业务逻辑的代码中不再含有针对特定领域问题代码的调用,业务逻辑同特定领域问题的关系通过方面来封装、维护,这样原本分散在在整个应用程序中的变动就可以很好的管理起来。

最新文章

  1. 学习廖雪峰的git教程
  2. log4j写入数据库
  3. HDU 5679 Substring 后缀数组判重
  4. eclipse按Crl+鼠标左键,找不到源文件的解决办法。
  5. eclipse颜色配置
  6. 首页TAB页的技术选择与功能实现
  7. __init__ __new__区别
  8. scrapy1.1入门用例简介
  9. Centos6.4在配置Tomcat7工作文件夹和虚拟路径
  10. openstack 网络架构 nova-network + neutron
  11. Layoutparams理解
  12. dedecms幻灯片调用图片模糊的解决办法
  13. 深入css布局篇(1) — 盒模型 & 元素分类
  14. vue项目使用websocket技术
  15. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
  16. pycharm 注册码/License server 2017年最新
  17. abap特性
  18. 2017-2018-2 20155229《网络对抗技术》Exp1:逆向及Bof基础实践
  19. Echarts调整图表上下左右的间距,Echarts调整柱状图左右的间距
  20. mac连接Windows远程桌面

热门文章

  1. I/O的控制方式——查询,中断,dma(转)
  2. jmeter插件JMeterPlugins-Standard 压力测试
  3. VS2012使用正则删除空行
  4. 几种排序算法的java实现
  5. 【BZOJ】3399: [Usaco2009 Mar]Sand Castle城堡(贪心)
  6. C、C++数据类型所占字节数
  7. Codeforces 193A. Cutting Figure
  8. Python相对完美的URL拼接函数
  9. gunicorn
  10. caffe杂