面向对象编程和面向切面编程的区别

面向对象编程和面向切面编程的区别是:面向对象程序编程作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。

面向对象编程和面向切面编程的区别-Worktile社区

面向对象编程

面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。

面向对象程序设计(Object Oriented Programming,OOP)是一种计算机编程架构。OOP的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

面向对象程序设计方法是尽可能模拟人类的思维方式,使得软件的开发方法与过程尽可能接近人类认识世界、解决现实问题的方法和过程,也即使得描述问题的问题空间与问题的解决方案空间在结构上尽可能一致,把客观世界中的实体抽象为问题域中的对象。

面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

面向切面编程

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

“面向切面编程”,这样的名字并不是非常容易理解,且容易产生一些误导。有些人认为“OOP/OOD11即将落伍,AOP是新一代软件开发方式”。显然,发言者并没有理解AOP的含义。Aspect,的确是“方面”的意思。不过,汉语传统语义中的“方面”,大多数情况下指的是一件事情的不同维度、或者说不同角度上的特性,比如我们常说:“这件事情要从几个方面来看待”,往往意思是:需要从不同的角度来看待同一个事物。这里的“方面”,指的是事物的外在特性在不同观察角度下的体现。而在AOP中,Aspect的含义,可能更多的理解为“切面”比较合适。

可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加某种特定功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,提高代码的灵活性和可扩展性,AOP可以说也是这种目标的一种实现。

在Spring中提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

延伸阅读:

什么是函数式编程?

函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。

和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。

和过程化编程相比,函数式编程里函数的计算可随时调用。

虽然 λ 演算并非设计来于计算机上执行,但可视为名列前茅个函数式编程语言。1980年代末期,Haskell发布企图集合很多函数式编程研究里的想法。

简单说,”函数式编程”是一种”编程范式”(programming paradigm),也就是如何编写程序的方法论。

它属于”结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。

文章标题:面向对象编程和面向切面编程的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38073

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月13日 下午11:09
下一篇 2023年2月13日 下午11:11

相关推荐

  • 绩效考核指标量化的方法有哪些

    绩效考核指标量化的方法包括:1、统计结果量化方法;2、目标达成情况量化方法;3、频率量化方法;4、余额控制量化方法;5、分段赋值量化方法;6、强制百分比量化方法等。统计结果量化是指按照任务完成后的状况,直接给出数字化的任务结果。 一、12个指标量化方法 1、统计结果量化方法 统计结果量化是指按照任务…

    2022年12月8日
    1.1K00
  • devops又叫什么

    DevOps亦称作开发运维协作、研发运维一体化。该模式便于软件开发与信息技术运维部门之间的协作与沟通,为快速迭代软件产品和服务提供有力支撑。 DevOps,一门集成了软件开发(“Dev”代表Development)与信息技术运维(“Ops”代表Oper…

    2024年3月26日
    1300
  • 软件测试缺陷管理系统是什么

    软件测试缺陷管理系统指的是在软件生命周期中识别、管理、沟通任何缺陷的过程(从缺陷的识别,到缺陷的解决关闭),确保缺陷被跟踪管理而不丢失。一般的项目,都是需要有跟踪管理工具来帮助进行缺陷全流程管理的。 缺陷管理系统指的是在软件生命周期中识别、管理、沟通任何缺陷的过程(从缺陷的识别,到缺陷的解决关闭),…

    2022年11月14日
    41900
  • oa系统单价

    标题:OA系统单价的实际构成与影响因素解析 OA系统单价通常受制于系统开发复杂度、功能丰富性、用户数量、服务质量与售后支持。详细而言,这个价格反映了企业对日常办公自动化需求的一种量化估算。价格可能因开发商规模、研发投入、市场环境以及客户特定需求的不同而有显著差异。系统定制化程度高,个性化需求更为著重…

    2024年1月16日
    15400
  • 硬件防火墙和软件防火墙的区别

    硬件防火墙和软件防火墙的区别:1、实现隔离内外部网络的方式不同;2、安全性不同;3、价格不同;4、功能性不同;5、保护范围不同。硬件防火墙基于硬件的防火墙专门保护本地网络。软件防火墙通过纯软件,单独使用软件系统来完成防火墙功能。 1、实现隔离内外部网络的方式不同 硬件防火墙:通过硬件和软件的组合,基…

    2023年1月31日
    62300
  • 如何根据项目复杂性调整项目管理策略

    根据项目复杂性调整项目管理策略应 1、分析项目的复杂性质和成因、2、选择合适的项目管理框架和工具、3、灵活运用沟通协调技巧、4、制定和实施风险管理计划、5、适时进行项目监控和调整。通过这些策略,管理者能够更好地应对不确定性和复杂性,确保项目成功。其中,选择合适的项目管理框架和工具 是项目成功的关键因…

    2023年12月21日
    21900
  • telnet和ping的区别是什么

    telnet和ping的区别在于:1、ping 是ICMP协议,只包含控制信息没有端口; telnet是TCP协议,有端口能承载数据;2、不能telnet并不代表不能ping, 这是两种不同的数据包, 防火墙可以设置哪种数据包可以通过等。 一、区别 1、ping 是ICMP协议,只包含控制信息没有端…

    2023年2月20日
    2.3K00
  • oa系统厂家

    OA系统,即办公自动化系统,旨在提升机构工作效率,实现信息化管理。选择优秀的OA系统厂家需要考虑八个方面:1、系统功能的全面性;2、用户体验和界面设计的友好性;3、系统安全性的可靠性;4、定制化和灵活性的强度;5、技术支持和售后服务的有效性;6、系统的兼容性和扩展性;7、供应商的市场地位和口碑;8、…

    2024年1月16日
    28300
  • java在线编程网站有哪些

    java在线编程网站有:1、LintCode;2、codecademy;3、Coursera;4、CSDN;5、Exercism。LintCode 是Java学习爱好者的福音,它不仅有算法题、数据库题、Java题目可以刷,还有Java和Sql的教程的手把手教程,一遍做题一边学习加深印象。 1、Lin…

    2023年2月6日
    16.9K00
  • 什么是流式编程风格

    fluent(流式)编程,它是一种编程的风格,可以让我们的代码简单易懂,code量更小,更易于编写。这种写法的主要特点就是在做完一件事之后会返回对象本身。流是懒加载的,这代表着它只在绝对必要时才计算。可以将流看作延迟列表。 fluent(流式)编程,它是一种编程的风格,可以让我们的代码简单易懂,co…

    2023年2月23日
    55200

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部