罔谈彼短,|

onejay

园龄:3年8个月粉丝:0关注:0

【Java】对AOP的个人感想

我一直搜索AOP相关的知识,希望能够理解AOP,直到最近稍微有点儿懂了,故写此博客记录一下自己目前的感悟。

 

AOP的基础是OOP,但是OOP有其局限性。想要实现尽可能地解耦调用与被调用两者之间的关系,OOP显然是不足以指导未来程序设计的。

OOP对于类之间的划分非常清晰,解耦了类与类之间的关系,但是其局限性在于每个类可能会有重复的对象、方法。

 

举个例子:

以OPP的思想,如果我要吃西瓜。那么我就得去买西瓜、拿刀切西瓜、吃西瓜。

OOP对于这个过程提出了质疑:1)那明天我要吃西瓜,不就是要继续做一遍这个操作了么?2)如果别人要吃西瓜,那我不就是整个过程都要重复一遍,但是结果是别人吃西瓜么?

 

于是OOP提出了这样的过程:1)我把买西瓜、拿刀切西瓜、吃西瓜都封装成一个对象,我以后要吃西瓜就调用这个对象去实现。我不需要去买、去切。

但是这样就有一个问题了,OOP提出的第二个质疑没能被完全地解决——如果这次对西瓜的操作不是吃,而是做成水果拼盘,那么流程就是:买西瓜、拿刀切西瓜、把西瓜跟别的水果一起做成水果拼盘。OOP一旦调用就要实现这个吃西瓜的动作,但这回不能吃,怎么办?

 

AOP于是提出了这样的思想:这流程中买西瓜、拿刀切西瓜是相同的操作。我对于这些操作,将它们封装成一个对象,所有要做这个动作的,调用我这个对象就可以了。

现在一个人想吃西瓜,它可以调用对象,然后吃。一家水果捞店,也可以调用这个封装好的对象,并且调用其它对象,然后做水果捞。

 

AOP在OOP的基础上,进一步解耦了调用与被调用的关系,并且大大增加了代码的复用。

 

所以这个切面是什么东西呢?

 

 

 

 

 

 

本文作者:onejay

本文链接:https://www.cnblogs.com/onejay/p/15026136.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   onejay  阅读(69)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起