前言

  面向切面编程(思想)AOP Aspect Oriented  Programming,是面向对象基础上 更关注最终目标 而不关注中间的小目标,简而言之,就是我们的目标(例如constroller)触发了我们关注的方法,此时就执行我们的观察者行为,例如在目标的方法触发前做事,触发后做事等等。

  为了让大家更好的理解,这里把面向过程、面向对象先讲解一遍。

面向过程编程(思想)POP

  Procedure  Oriented  Programming,面向过程编程思想(关注事情步骤,事情本身),将一件事情的整体看作是一个流程,我们更关注事情的流程、步骤。比如我去超市买菜,我要下楼,等红绿灯,走过几条街道,进入超市选择自己要的菜,然后排队买单。我会关注这些过程要经历的事件,步骤。

面向对象编程(思想)OOP

  Object  Oriented  Programming,面向对象编程思想(关注中间有几个对象参与其中),将原有整体事情的步骤,拆分成小段,每一个小段封装成一个单独的事情(方法),不同的方法交给不同的人来做,例如我去超市买菜,我在家里出发,最终目的是在超市买菜,中间几个环节交给不同的人(对象)来帮我做:下楼(被人背下去),打车,选菜,排队等等都有人帮我做,我只要把这些顺序连起来,指挥不同的对象按照我要求的顺序执行便可。

面向切面编程(思想)AOP

  Aspect Oriented  Programming,面向切面编程思想(面向对象基础上 更关注最终目标 而不关注中间的小目标),但要注意切面本身也是对象,比如我去超市买菜,我为起始对象,超市为目标对象,在我到超市之前所经历的事情都归纳到切面对象(下楼,打车,选菜,排队执行这些方法的人(对象)等等),连接点(管理切面对象中的方法按顺序执行),代理对象负责管理这些切面对象,切点为买菜(即在目标对象中触发我们关心的方法);

案例

  这里就用js模拟了,js模拟简单些,java模拟的话思路也是一样的,而且java的spring本身用xml或注解就可以了,这里主要讲思想

// 面向切面的方式
class agency{//可以理解为过滤器 before(){
console.log("走路去超市");
} main(Func){//代理对象
this.before();
Func();
this.after();
} after(){
console.log("走路回家");
} } let agencyObj = new agency();//找代理,类似找人帮我们买菜送上门,这方式好处在于其他人还可以找代理买家具,买学习用品等等,我们生成了一次代理,然后传不同的任务进去让代理帮我们执行
function main(){
money -= 55;
console.log("买完菜,减去55元,还剩:"+money);
}
agencyObj.main(main);//结果同上 money = 100;
function main2(){
money -= 98;
console.log("买日用品,减去98元,还剩:"+money);
}
agencyObj.main(main2);

  上面的before和after方法可以当成过滤器,比如我要得到的数据渲染前先解密,解密渲染后,部分数据用*替换这类场景。

思路

  面向切面的方式就是更注重结果而不注重中间实现的步骤,中间无论由多少个切面对象帮你做了事,都由一个代理对象来帮你管理执行,而我们需要做的就是把要做的事告诉代理对象。当然面向切面的方式是否使用要根据业务场景来定,如果发现有多个方法中间需要执行的步骤流程一致,而这些方法只需要拿到经过这些步骤之后所得到的结果,不关心中间发生了什么,就使用面向切面的方式。

面向切面对象AOP的更多相关文章

  1. 面向切面编程(Aop)

    AOP中的概念 AOP(Aspect Orient Programming),也就是面向切面编程.可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程 ...

  2. 理解面向过程(OPP)、面向对象(OOP)、面向切面(AOP)

    概念 面向过程编程OPP:Procedure Oriented Programming,是一种以事物为中心的编程思想.主要关注“怎么做”,即完成任务的具体细节. 面向对象编程OOP:Object Or ...

  3. Spring学习手札(二)面向切面编程AOP

    AOP理解 Aspect Oriented Program面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. 但是,这种说法有些片面,因为在软件工程中,AOP的价值体现的并 ...

  4. Spring框架学习笔记(2)——面向切面编程AOP

    介绍 概念 面向切面编程AOP与面向对象编程OOP有所不同,AOP不是对OOP的替换,而是对OOP的一种补充,AOP增强了OOP. 假设我们有几个业务代码,都调用了某个方法,按照OOP的思想,我们就会 ...

  5. Spring之控制反转——IoC、面向切面编程——AOP

      控制反转——IoC 提出IoC的目的 为了解决对象之间的耦合度过高的问题,提出了IoC理论,用来实现对象之间的解耦. 什么是IoC IoC是Inversion of Control的缩写,译为控制 ...

  6. 04 Spring:01.Spring框架简介&&02.程序间耦合&&03.Spring的 IOC 和 DI&&08.面向切面编程 AOP&&10.Spring中事务控制

    spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的A ...

  7. [译]如何在ASP.NET Core中实现面向切面编程(AOP)

    原文地址:ASPECT ORIENTED PROGRAMMING USING PROXIES IN ASP.NET CORE 原文作者:ZANID HAYTAM 译文地址:如何在ASP.NET Cor ...

  8. Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP)

    在Spring基础 - Spring简单例子引入Spring的核心中向你展示了AOP的基础含义,同时以此发散了一些AOP相关知识点; 本节将在此基础上进一步解读AOP的含义以及AOP的使用方式.@pd ...

  9. 设计模式之面向切面编程AOP

    动态的将代码切入到指定的方法.指定位置上的编程思想就是面向切面的编程. 代码只有两种,一种是逻辑代码.另一种是非逻辑代码.逻辑代码就是实现功能的核心代码,非逻辑代码就是处理琐碎事务的代码,比如说获取连 ...

随机推荐

  1. Java实现 LeetCode 58 最后一个单词的长度

    58. 最后一个单词的长度 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度. 如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词. 如果不存在最后一个单词, ...

  2. Arrays.binarySearch和Collections.binarySearch的详细用法

    概述 binarysearch为在指定数组中查找指定值得索引值,该值在范围内找得到则返回该值的索引值,找不到则返回该值的插入位置,如果该值大于指定范围最大值则返回-(maxlength+1),而: i ...

  3. Java实现 洛谷 P1328 生活大爆炸版石头剪刀布

    import java.util.Scanner; public class Main{ private static int[] duel(int playerA, int playerB){ in ...

  4. java代码(4)---guava之Immutable(不可变)集合

    Immutable(不可变)集合   一,概述 guava是google的一个库,弥补了java语音的很多方面的不足,很多在java8中已有实现,暂时不展开,Collections是jdk提供的一个工 ...

  5. MD760按键说明书

  6. .gitignore文件详细说明

    简介 有些时候,你必须把某些文件放到 Git 工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件.Java编译生成的.class文件.处理这个需求很简单,从不git add它们就可以.但这样 ...

  7. react后台管理系统路由方案及react-router原理解析

        最近做了一个后台管理系统主体框架是基于React进行开发的,因此系统的路由管理,选用了react-router(4.3.1)插件进行路由页面的管理配置. 实现原理剖析 1.hash的方式   ...

  8. Android官方新推的DI库 Hilt

    Android官方新推的DI库 Hilt Hilt是Google Android官方新推荐的依赖注入工具. 已加入到官方文档: Dependency injection with Hilt. 目前是a ...

  9. 【分区】使用 MBR 分区表分区并格式化

    注意: 本方法仅适用于容量小于 2TB 的硬盘进行分区及格式化.大于 2TB 的硬盘的分区及格式化请使用 GPT方式,可参阅 使用 GPT 分区表分区并格式化. 格式化后,数据盘中的数据将被全部清空. ...

  10. Linux使用手册

    一.开关机 sync :把内存中的数据写到磁盘中(关机.重启前都需先执行sync) shutdown -rnow或reboot :立刻重启 shutdown -hnow :立刻关机 shutdown ...