AOP的编程思想 与 OOP有什么不同?

1.OOP即面向对象的编程,它将系统各功能封装为对象,通过对象的继承和多态,从而获得强大的代码复用能力,极大地提高了系统设计能力。但是有时,无法通过OOP避免一些重复的冗余代码。(例如,在一个JavaEE多层系统中,通常,业务组件除了实现核心的逻辑功能之外,还需要诸如日志记录、安全检查、事务管理等功能)。一个可能的解决方法是使用Decorator(装饰器模式),将系统关注点转移到另一个类中,或者通过派生一个子类,覆盖其每一个方法,关注点出现在新类的每个方法中。一旦某个方法忘记了覆盖,则可能出现安全漏洞。

2.和OOP不同,AOP(面向切面编程)以另一种方式来看待系统的结构。按照AOP的观点,一个系统被分解为不同的关注点(Concern),或者称之为切面(Aspect)(由于这些关注点横跨了多个核心逻辑,因此AOP将其称为Aspect(切面))。

3.AOP通过将分散在各处的横切代码集中到一个独立的模块中,然后将这些横切模块以某种方式织入到核心逻辑的流程中,从而避免代码重复,提高整个系统的可维护性。

4.然而,AOP并非解决问题的灵丹妙药。在实际应用中,有的系统级关注点非常容易通过AOP实现横切,例如:事务管理,这是由于分散在各处的事务代码几乎是完全相同的;有的系统级关注点就不那么容易实现,例如:日志记录。由于日志记录经常需要获取局部变量,这些内容对于系统维护常常具有重要意义,如果应用横切,则只能实现非常粗的记录(仅包括方法名及参数),无法实现细粒度的日志。因此,在应用AOP前,需要对AOP做全面的深入了解,并在实际项目中根据需要渐进地应用AOP。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值