IoC 和 AOP 使用的方法有什么区别

IoC 和 AOP 使用的方法区别有:1、定义不同;2、功能不同;3、实现项目不同。ioc是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。aop面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

IoC 和 AOP 使用的方法有什么区别-Worktile社区

1、定义不同

ioc:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。

aop:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

2、功能不同

ioc:Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。

采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。

aop:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

3、实现项目不同

ioc:现有的框架实际上使用以下三种基本技术的框架执行服务和部件间的绑定:

类型1 (基于接口): 可服务的对象需要实现一个专门的接口,该接口提供了一个对象,可以重用这个对象查找依赖(其它服务)。早期的容器Excalibur使用这种模式。

类型2 (基于setter): 通过JavaBean的属性(setter方法)为可服务对象指定服务。HiveMind和Spring采用这种方式。

类型3 (基于构造函数): 通过构造函数的参数为可服务对象指定服务。PicoContainer只使用这种方式。HiveMind和Spring也使用这种方式。

aop:AOP是一个概念,并没有设定具体语言的实现,它能克服那些只有单继承特性语言的缺点(如Java),AOP具体实现有以下几个项目:

AspectJ ™: 创建于Xerox PARC. 有近十年历史,成熟

缺点:过于复杂;破坏封装;需要专门的Java编译器。

动态AOP:使用JDK的动态代理API或字节码Bytecode处理技术。

基于动态代理API的具体项目有:JBoss 4.0 JBoss 4.0服务器。

基于字节码的项目有:aspectwerkz ,spring。

延伸阅读:

什么是AOP?

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

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

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

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

文章标题:IoC 和 AOP 使用的方法有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38039

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

相关推荐

  • 8g和12g运行内存有啥区别

    8g和12g运行内存的主要区别在于:1.容量大小方面;2.多任务处理能力方面;3.适用场景方面。其中,12g运行内存提供更大的容量,能够更好地处理多任务和高负载应用;8g运行内存能够满足一般的多任务需求,但在高负载情况下可能会出现延迟,适合日常使用和一般办公需求。 1.容量大小方面 8g运行内存 1…

    2023年8月9日
    1.6K00
  • vscode为什么一直报错

    Visual Studio Code (VSCode) 是许多开发者选择的主要代码编辑器之一,因为它轻便、快速且功能丰富。然而,即使是如此优秀的工具,有时也会遇到一直报错的情况。一般来讲,VSCode一直报错的原因主要包括插件冲突、软件更新导致的兼容性问题、错误的代码配置、以及环境路径设置不正确。其…

    2024年4月3日
    24300
  • 如何将Bug管理与敏捷开发方法(如Scrum)相结合

    敏捷开发和Bug管理结合能高效解决软件开发中的问题。1、融入迭代过程、2、优先级划分、3、透明沟通、4、持续学习及改进是核心策略。软件开发团队需在每个迭代周期中检查和修复Bug,以确保产品质量持续提升。分配优先级,确保高优先级Bug首先被解决,同时鼓励团队成员间的透明沟通,促使问题迅速暴露和解决。最…

    2023年12月18日
    28700
  • 弹性云服务器由哪些部分组成

    弹性云服务器是由CPU、内存、操作系统、云硬盘组成的最基础的计算组件。弹性云服务器创建成功后,可以像使本地PC或物理服务器一样,使用弹性云服务器。弹性云服务器的开通,只需要指定CPU、内存、操作系统、规格、登录鉴权方式即可。

    2022年10月13日
    81800
  • 研发团队中跨文化交流的挑战与解决方案

    在全球化的背景下,研发团队遍布全球各地,面临的主要挑战是跨文化交流。解决这一问题的核心观点包括语言障碍、沟通风格差异、工作时间不一致、价值观和信念差异。为了克服这些挑战,建议采用统一的交流平台、灵活的工作安排、文化培训、定期团队沟通等方法。本文将详细探讨跨文化交流中遇到的具体挑战,并提出相应的解决策…

    2023年11月14日
    52200
  • cnc编程是做什么的

    摘要 CNC编程是用于设定和指导计算机数控机床(Computer Numerical Control machine)的加工过程的一种编程活动。它包含了1、设计加工产品的模型;2、转换为机床能理解的代码;3、优化加工路径等关键步骤。CNC编程师必须将设计图纸转换为一系列机床能够执行的具体指令,这个过…

    2024年4月25日
    600
  • vscode为什么自动被选中

    VSCode(Visual Studio Code)自动选中文本的原因可以归结为几个方面:自动选中功能、扩展冲突、编辑器设置错误、和软件缺陷。这些因素中,编辑器设置错误通常是最容易排查和解决的。例如,VSCode中的“Cursor Surrounding Lines”功能,旨在保证光标周围有一定数量…

    2024年4月3日
    9400
  • 项目如何做大成本管理工作

    做大成本管理工作,关键在于制定详细的成本预算、优化成本结构、实施成本控制、提升成本意识、以及采用先进的成本管理工具。其中,制定详细的成本预算是基础,因为它为成本控制和优化提供了明确的指标和方向。通过对项目的全面分析,预估各项成本的支出,包括直接成本和间接成本,确保每一项费用的投入都能达到预期的效果,…

    2024年4月11日
    5100
  • oa流程状态

    标题:OA流程状态的掌控与优化 摘要:OA流程状态涵盖未开始、进行中、已完成、和已取消四个主要阶段。这些状态对于管理和追踪工作流程极为重要。在它们当中,进行中的状态尤为关键,因为它涉及到流程的执行和监控。进行中状态常常配备多个检查点,确保流程顺利进展,也是改进措施和提高效能可能介入的时机。该状态中的…

    2024年1月16日
    21500
  • 国内的oa系统

    标题:国内的OA系统全面探究 摘要:办公自动化系统(OA系统)在中国的企业管理中发挥着核心作用。1、提高工作效率:通过数字化流程简化任务分配与追踪。2、优化沟通协作:集中数据存储和共享功能促进团队间信息交流。3、保障数据安全:利用访问权限控制和数据备份能力提升信息安全。4、便捷的远程办公支持:实现无…

    2024年1月17日
    23500

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部