【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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步