zoukankan      html  css  js  c++  java
  • 解耦与分离 —— 面向切面编程(AOP)

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

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

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

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

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

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

    2. 解耦的实现

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

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

    • AOP 与 面向对象
      • AOP 是面向对象编程的一个强大补充;
      • 通过AOP,可以把之前分散在各处的行为放入可重用的模块;
        • 也即 AOP 同面向对象一样,都能实现某种形式的代码可重用;
  • 相关阅读:
    redis 笔记
    经验
    增加模块-概念图
    node API buffer
    VS2010中使用CL快速 生成DLL的方法
    WIN7下VS2010中使用cl编译的步骤
    Win7下VS2010编译的程序在XP报错:找不到msvcp100d.dll或者msvcp100.dll
    C#速学
    Windows下架设SVN服务
    Redis 压力测试
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421173.html
Copyright © 2011-2022 走看看