博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解耦与分离 —— 面向切面编程(AOP)
阅读量:5079 次
发布时间:2019-06-12

本文共 693 字,大约阅读时间需要 2 分钟。

家里的电表总结起来有两大特性:

  • 电视机需要(电量管理),空调需要(电量管理),热水器也需要电量管理,即一组对象都需要某一功能特性;
  • 电视机根据信号输出画面,空调吹出冷风,热水器将水加热,这些业务功能的实现,又是和电表无关的;

软件系统中的某些功能,就像家庭中的电表一样。这些功能需要用到应用程序中的多个地方。软件开发中,散布于应用中多处的功能被称为横切关切点(cross-cutting concern),与继承体系的纵向关系相对。这些横切关注点概念上是与应用的业务逻辑相分离(虽然有时在形式上,往往会直接嵌入到应用的业务逻辑之中)。

1. 面向切面编程(AOP)应用场景

  • 日志;
  • 事务管理:声明式事务
  • 安全;
  • 缓存;

日志、安全和事务管理对软件系统设计非常重要,但这些是否为应用程序(客户端,调用端)主动参与的行为呢。如果让应用程序只关注自己所针对的业务领域,而其他方面的问题由其他应用对象来处理,以实现辅助功能和业务主体的分离和解耦。这就是面向切面编程(AOP)致力于解决的问题。

2. 解耦的实现

  • 依赖注入:管理和配置应用对象,以有助于实现应用对象之间的解耦;
  • AOP 可以实现横切关注点(cross-cutting concern)与它们所影响的对象之间的解耦;

3. AOP 与其他编程思想的关系

  • AOP 与 面向对象
    • AOP 是面向对象编程的一个强大补充;
    • 通过AOP,可以把之前分散在各处的行为放入可重用的模块;
      • 也即 AOP 同面向对象一样,都能实现某种形式的代码可重用;

转载于:https://www.cnblogs.com/mtcnn/p/9421173.html

你可能感兴趣的文章
html+css 布局篇
查看>>
SQL优化
查看>>
用C语言操纵Mysql
查看>>
轻松学MVC4.0–6 MVC的执行流程
查看>>
redis集群如何清理前缀相同的key
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
获取元素
查看>>
proxy写监听方法,实现响应式
查看>>
第一阶段冲刺06
查看>>
十个免费的 Web 压力测试工具
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
mysql重置密码
查看>>
jQuery轮 播的封装
查看>>
一天一道算法题--5.30---递归
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
python numpy sum函数用法
查看>>
php变量什么情况下加大括号{}
查看>>
linux程序设计---序
查看>>
【字符串入门专题1】hdu3613 【一个悲伤的exkmp】
查看>>