面向过程编程

面向过程编程(POP):

面向过程编程是以过程为中心的编程思想,从而分析解决问题所需要的步骤,然后编写函数来实现这些步骤,再依次调用这些函数。
      比如把大象放进冰箱的步骤:打开冰箱、把大象装进冰箱、关闭冰箱。

面向对象编程(OOP):

面向对象编程是相对于面向过程而言的,将功能封装到对象里,强调具备功能的对象。
      比如把大象放进冰箱:调用拥有“把大象装进冰箱”功能的对象。这个功能里面包含了大象(进入)、冰箱(开门、关门)对象。

面向切面编程(AOP):

核心思想是将业务逻辑中与类不太相关的通用功能切面式的提取出来,让多个类共享这个行为,当需要改变这个行为时不必修改全部的类,而只需要单独修改这个行为。

比如开发中需要我们在方法执行完成后,记录日志或是计算这个方法的执行时间,不使用AOP时是在方法最后调用另一个专门记录日志的方法,或是在方法体的首尾分别获取时间,然后通过计算时间差来计算整个方法执行所消耗的时间来完成需求。但这样就需要在每个方法都写上一段相同的代码,代码耦合度高,导致后期需要代码维护时就得一个一个修改,而使用AOP可以对业务逻辑的各个部分进行隔离,即AOP能够将那些与业务无关,却为为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,以此减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

现在大多用到AOP的有日志记录,权限验证,事务控制,统一异常处理,性能检测之类的。

面向对象编程,面向切面编程,面向过程编程相关推荐

  1. Android面向切面(AOP)编程实战

    转载自https://www.jianshu.com/p/b96a68ba50db AOP:面向切面编程(Aspect-Oriented Programming).如果说,OOP如果是把问题划分到单个 ...

  2. Spring笔记——使用Spring进行面向切面(AOP)编程

    要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间: =================== Spring提供了两种切面声明方式,实际工作中我们可以选用其中一种: 1. 基于XM ...

  3. spring 面向切面(AOP)编程例子

    aop原理: 将共同方法封装起来,然后找到切面点插入进业务流程即可 JoinPoint要了解 框架:springcloud+consul+gateway+springboot 业务环境:系统log日志 ...

  4. DI是实现面向切面和面向抽象的前提

    DI越来越重要 DI就是依赖注入,现在来说,大部分框架都是以DI为基础组件的,每一个框架都有自己的DI组件,像dotnet core,java spring等,也都为自己的框架量身打造了DI工具. 面 ...

  5. vue面向切面_感受面向切面编程

    什么是面向切面 初听面向切面编程时, 一头雾水, 什么是面向切面, 只听说过面向对象(OOP), 面向过程(PO), 函数式编程(FP), 面向切面 ? 面向的难道是某一个面? 面向搜索引擎后才了解到 ...

  6. PHP之AOP面向切面编程原理(1)

            面向切面,面向方面,也叫刀削面.        面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承.多态和封装.而封装 ...

  7. iOS面向切面编程-AOP

    1. AOP简介 AOP: Aspect Oriented Programming 面向切面编程. 面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目 ...

  8. 都知道面向对象了,那么面向切面呢!通俗易懂带你走进面向切面编程!

    什么是AOP 1.概念 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是O ...

  9. 面向对象,面向过程编程

    很多时候,我们都是用面向对象语言进行面向过程编码.     1. 滥用 getter.setter 方法. 滥用getter,setter方法很容易造成违反封装特性.数据没有访问权限控制,任何代码都可 ...

最新文章

  1. ACL 2022录用结果出炉:国内多支团队晒“战绩”,清华一实验组18篇入选
  2. python3之request用法_如何扩展python3 BaseHTTPRequestHandler类,以便可以使用成员variab调用函数...
  3. 网页爬虫 python-python爬虫——爬取网页的中文
  4. Apache ZooKeeper - 节点实操常用zookeeper命令
  5. linux which
  6. Codeforces Round #524 Div. 2 翻车记
  7. mysql connector net 6.9.3_MySQL Connector/Net 6.9.3 发布 MySQL Connector/Net 6.9.3下载
  8. mysql的游标处理_mysql 存储过程、游标及逐行处理的配合使用
  9. Leetcode:11.container-with-most-water(盛水最多的容器)
  10. JWT跨域身份验证解决方案
  11. CMake 学习笔记 02 - 更复杂的项目
  12. VS2012 UPDATE 2 发布了离线包
  13. 起II6.0中使用windows2003自带的虚拟主机管理系统
  14. C++ std::vector 容器 是什么
  15. 流浪猫的故事看质量人员需求
  16. 电力仿真, 电力可视化源码库,MATLAB仿真,Multisim仿真,PSASP仿真, 电力地理接线图,VC++ 控件源程序
  17. 游戏编程之路 -- 《Windows游戏编程大师技巧》第一章 笔记
  18. 织梦dedecms采集规则,东方资讯娱乐新闻采集规则
  19. 项目,项目集与项目组合的关系
  20. Android 获取人民币符号

热门文章

  1. 谁说每个开发者都应该拥有一个属于自己的服务器?
  2. 中国的第一封EMAIL与GOOGLE之退出
  3. CSS实现水平垂直居中的6种方式
  4. css 水平垂直居中的几种常见方式
  5. Three.js显示stl格式文件,html在线stl文件
  6. C 语言 System 设置背景色和前景颜色
  7. 玛塔机器人函数_USA Today旗下专家详测!玛塔机器人到底靠什么打动了歪果仁?...
  8. bzoj1503 郁闷的出纳员
  9. 硬盘构造及其工作原理
  10. 全面深入学习OLE技术