AOP理论

1人阅读 评论(0) 收藏 举报
分类:

AOP是一种编程模式,可以说是对面向对象设计(OOP)的一种补充。面向对象设计无法真正解耦代码结构,所以面向切面编程(Aspect-oriented Programming)是将多个对象的实现交叉点提取出来,比如所有的Spring MVC中Controller所有的请求都需要进行安全认证,而认证不属于Controller对象的真正关注点,它的关注点应该在如何处理请求,那么将安全认证提炼出来就是一个切面。

什么关键词用来描述AOP,? 正交,解耦,一种优化的设计模式。

去超市买东西作为例子,你将所有买的东西Item对象放到购物车Cart或者购物篮Basket对象里。
然后再柜台扫码结账。CartBasket对象的主要功能是什么?当然是盛放Item,而不是到处理支付,更不应该调用支付方法。这时如何处理这个逻辑?

当然需要一个类用来处理它们,当准备结账的时候,处理购物车和购物篮里的物品。这个类就是切面对象(Aspect),我们可以在这个类定义一个结账的方法checkSum

  public class sampleAspect{
       @advice
       public int checkSum(){
           PaymentInterface.pay();

       }


  }

这不是一串伪码,在结账的时候调用支付接口,在结账的时候执行这个checkSum就是我们的建议(Advice)!

这里BasketCart对象都应该有价格:

 public class OrderPrice(){
    public int check(Basket bas);
    public int check(Cart cart);
 }
 //Basket和Cart完全可以继承同一父类,为了说明AOP,我们不再为此分心!

每次调用check方法,你需要调用结账接口(比如支付宝),而不愿意在每个check方法中都写相同的模板代码比如:

//这不是调用支付接口的真正代码
Checkpoint point=JNDIFactory.lookat(/payment/port);
point.pay(price);

那么你就可以在这里设置一个切入点(JoinPoints)!

然后你想在check方法返回支付金额之后让支付宝处理支付金额等细节你就可以重构上述切面对象,并将模板代码粘贴进去:

public class sampleAspect{
       @advice(AfterCheck is invoked)
       public int checkSum(){
           //这不是调用支付接口的真正代码
            Checkpoint point=JNDIFactory.lookat(/payment/port);
            point.pay(price);
       }


  }

这就是一个完整的面向切面编程!

查看评论

spring AOP 理论知识点总结.wps

  • 2011年08月20日 18:16
  • 361KB
  • 下载

Spring AOP实现方式

Spring中4中AOP区别 1. advisor类:需要依赖Spring接口,spring版本比较低时可以采取这种方式 2.:适合用户从低版本Spring迁移到高版本Spring,重复利用以前a...
  • a382064640
  • a382064640
  • 2015-12-15 19:57:47
  • 1493

IOC、DI、AOP是什么,为什么使用,怎么用

IOC、DI、AOP是什么,为什么使用,怎么用 Spring中加载配置文件的两种方法,可以加载多个配置文件吗?单例模式、和工厂模式定义 依赖注入的三种方法 1.IOC IOC为控制反转...
  • maidaogo
  • maidaogo
  • 2014-11-25 09:58:59
  • 1059

AOP的那些事以及在SpringBoot的应用

面向切面编程(Aspect Oriented Programming),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 *AOP其实只是OOP的补充而已。OOP从横向上区分出一个个的...
  • zhaoenweiex
  • zhaoenweiex
  • 2017-10-08 21:01:37
  • 348

AOP概念与运行原理

AOP指的就是面向切面编程,在实际的开发和工作中很多地方都深有体现,比如权限控制,控制全局状态等。接下来会详细阐述AOP的概念,给出对应的DEMO来深入学习实践,探讨AOP的意义。...
  • u012403290
  • u012403290
  • 2017-03-21 15:52:45
  • 4168

aop的代码原理+理论

AOP 主要是利用代理模式的技术来实现的。 1、静态代理:就是设计模式中的proxy模式 a、业务接口 /** * 抽象主题角色:声明了真实主题和代理主题的共同接口。 * ...
  • u010919133
  • u010919133
  • 2016-03-07 10:27:08
  • 158

Spring AOP 理论解析

Spring AOP
  • zhang53141
  • zhang53141
  • 2017-07-05 11:04:12
  • 181

软件理论之AOP

前段时间一直周旋于各种有趣且辛苦, 或者无趣且更辛苦的事情当中, 虽然其间也切换到其他好些不同的技术领域, 但一直没有放弃在AOP方面的关注思考. 前面之所以没有能接着AOP这个话题继续和大家聊下去,...
  • springontime
  • springontime
  • 2014-04-08 22:43:05
  • 697

【理论】Spring AOP

面向切面:利用Spring可以遵循完美的面向对象设计,编写松耦合代码,但其中还有一些核心业务与辅助性业务交织在一起,使得代码杂乱,难于维护;AOP的思想则将这些在整个系统使用较多的非核心业务的辅助性业...
  • Munger6
  • Munger6
  • 2017-02-08 20:03:11
  • 183

Spring AOP原理分析一次看懂

什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引...
  • yuexianchang
  • yuexianchang
  • 2017-08-10 00:03:21
  • 12470
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 1077
    排名: 4万+
    博客专栏
    带注释的网页代码
    主要是自己没有事情,学的前端的一些小东西。毕竟前端要懂一点
    最新评论