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

相关推荐

  • Java 和 C# 最大的不同是什么

    Java 和 C# 最大的不同之处在于: C# 的泛型不像 Java 采用擦除,而是真真正正会对所有的类型参数特化代码(尽管对于引用类型会共享实现采用运行时分发),这也就意味着能最大程度确保性能,并且对应的类型拥有根据类型参数大小不同而特化的内存布局。 一、Java和c#最大不同 Java 和 C#…

    2023年4月3日
    28100
  • 如何通过看板管理组织企业生产

    通过看板管理组织企业生产:1、设计并制作看板;2、正确使用看板;3、及时整理看板;4、整顿看板;5、清扫、清洁看板。其中,设计并制作看板是看板管理的基础和前提,看板是实现准时生产的工具,它具有计划和调度指令的作用。

    2023年1月2日
    15500
  • 数据库中的第四范式是怎么样的

    第四范式(4NF)是一种比第三范式更加高级的范式。它是为了解决多值依赖关系而提出的,可以避免数据冗余和数据更新异常。第四范式是指在一个关系模式中,如果存在多个独立的多值依赖关系,那么就可以将这些多值依赖关系分解成单独的关系模式。 在关系型数据库设计中,第四范式(4NF)是一种比第三范式更加高级的范式…

    2023年5月31日
    37100
  • 如何在员工中建立团队合作和凝聚力

    在员工中建立团队合作和凝聚力的问题可以通过1、清晰定义团队目标和价值观,2、增进团队间的互信和沟通,3、提供合作和成长机会,4、强化认可和奖励机制,5、组织团队建设活动与庆祝成功来解决。本文将深入探讨其中的第三点,即如何通过提供合作和成长机会,激发员工的合作精神和提升团队的凝聚力。 1、清晰定义团队…

    2023年8月9日
    12300
  • 组态软件有哪些

    组态软件有:1、InTouch;2、iFix;3、Citech;4、WinCC;5、组态王;6、Controx(开物)。Wonderware的InTouch软件是最早进入我国的组态软件。在80年代末、90年代初,基于Windows3.1的InTouch软件曾让我们耳目一新,并且InTouch提供了丰…

    2023年4月30日
    48700
  • 需求优先级排序方法是什么

    需求优先级排序方法:1、对比法;2、单参数法/核心指标法;3、双参数法/三参数法;4、多参数法。对比法本质上是利用我们人类在相对比较的天性和能力,典型的对比法有Kano模型、MoSCoW模型、马斯洛需要层次模型和Pair-wise对比矩阵。

    2023年1月8日
    74900
  • 实现看板系统得有哪些功能

    实现看板系统得有以下功能:一、看板环路;二、看板计算;三、看板执行;四、看板图形;五、看板预警;六、质量可追溯性。看板管理系统提供看板环路设置功能。通过指定看板物料、供应源、目的地、看板张数、补货时间、运输时间和看板环路的其他信息。 一、看板环路 看板管理系统提供看板环路设置功能。通过指定看板物料、…

    2023年4月24日
    13100
  • 什么是 Smurf 攻击

    Smurf 攻击是分布式拒绝服务 (DDoS) 攻击的一种形式,该攻击会导致计算机网络停止服务。Smurf 程序通过利用互联网协议 (IP) 和互联网控制消息协议 (ICMP) 的漏洞来实现其目的。

    2022年11月7日
    44400
  • AI 驱动的超分辨技术落地实践

    近年来,随着深度学习技术的快速发展,基于AI的超分辨技术在图像恢复和图像增强领域呈现出广阔的应用前景,受到了学术界和工业界的关注和重视。但是,在RTC视频领域中,很多AI算法并不能满足实际场景下的应用需求。本文将着眼于AI技术从研究到部署的落地问题,分享超分辨技术在RTC领域落地应用所面临的机遇与挑…

    2022年3月17日
    49200
  • 产品管理的环节有哪些

    产品管理的环节有:1、产品规划;2、需求管理;3、产品设计;4、产品开发与测试;5、产品验收与交付。其中,产品规划是指,产品经理在这个环节首先需要对市场和目标客户有透彻的了解,评估外在发展机会与风险。 一、产品规划 产品研发管理的名列前茅步,就是产品规划。产品经理在这个环节首先需要对市场和目标客户有…

    2023年4月17日
    22700

发表回复

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

400-800-1024

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

分享本页
返回顶部