POP、OOP、AOP 是什么意思?区别是什么?

本文深入解析了面向过程编程(POP)、面向对象编程(OOP)和面向切面编程(AOP),介绍了它们的概念、实例和在软件开发中的应用,强调了如何通过结合这三种方法提升开发效率。

POP 面向过程编程

procedure-oriented programming、

专注于过程的一种编程思想,解决问题时,按照具体步骤一步一步实现

POP把大象装进冰箱

		 第一步: 打开冰箱门        开门()

		 第二步:把大象放进去     装大象()

		 第三步: 关闭冰箱门        关门()

OOP 面向对象编程

object oriented programming

对事物进行分类,把具有相同属性的分为一类,通过类创建对象

举例: 人类——>法外狂徒张三 (张三就是具体的对象)

OOP把大象装进冰箱:

设计一个冰箱类

public class    冰箱{

  名字

  型号

  价格

  开门( );

 装大象();

 关门();

}
  冰箱  bx = new  冰箱(); //在运行 时在内存中会划出一块空间,用来存储具体的对象
	  
	   bx. 开门() 

       bx. 装大象()

面向对象是在宏观整体上对事物之间的关系进行设计,

具体实现又回归到面向过程的具体实现.

两者是相辅相成的.

AOP 面向切面编程

Aspect of programming

是一种编程思想,是面向对象编程OOP的延伸

AOP框架:Aspects 框架

Spring框架把Aspects框架也集成进来,用来实现AOP面向切面编程

面向切面编程实现就是为了让开发人员专注业务逻辑代码,提高开发效率

AOP 面向切面编程作用:

像类似于事务处理、日志、权限判断这些代码在类中很多方法中都要使用,如果每个方法中都要写这些代码,就很繁琐,所以把这些都提取为一个工具类,哪个方法要用它,就在哪里方法中注入就行,这样也更好维护。

AOP(Aspect-Oriented Programming,面向切面编程)和OOP(Object-Oriented Programming,面向对象编程)是两种不同的编程范式,它们各有侧重点和适用场景。 ### 回答问题 #### 1. OOP(面向对象编程) OOP是一种以对象为中心的编程范式,强调通过类和对象来组织代码。其核心概念包括封装、继承和多态。OOP的主要目标是通过将数据和行为封装在对象中,实现模块化和可重用性。 #### 2. AOP(面向切面编程) AOP是一种补充性的编程范式,旨在解决OOP中难以处理的横切关注点(Cross-Cutting Concerns)。横切关注点是指那些与业务逻辑无关但又需要在多个模块中重复使用的功能,比如日志记录、事务管理、安全性等。AOP通过将这些横切关注点从业务逻辑中分离出来,使得代码更加清晰和易于维护。 #### 区别 | 特性 | OOP | AOP | |------------------|---------------------------------|---------------------------------| | 核心思想 | 将系统分解为对象及其交互 | 将横切关注点从业务逻辑中分离 | | 关注点 | 数据建模和行为封装 | 横切关注点的分离和集中管理 | | 实现方式 | 类、对象、继承、多态 | 切面、通知、连接点 | | 主要用途 | 系统的核心业务逻辑 | 日志、事务、安全等辅助功能 | #### 示例代码 以下是一个简单的AOP示例,展示如何通过AOP实现日志记录: ```java import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.After; // 定义一个切面 @Aspect public class LoggingAspect { // 在方法执行前打印日志 @Before("execution(* com.example.service.*.*(..))") public void logBefore() { System.out.println("Method is about to execute"); } // 在方法执行后打印日志 @After("execution(* com.example.service.*.*(..))") public void logAfter() { System.out.println("Method has been executed"); } } ``` ### 给出解释 在上述代码中,`LoggingAspect` 是一个切面,它定义了两个通知: 1. `@Before`:在方法执行前触发。 2. `@After`:在方法执行后触发。 这种设计将日志记录这一横切关注点从业务逻辑中分离出来,使得业务逻辑更加专注于核心功能。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码元宋大米

感谢小主大赏,留言可进互助群~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值