猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
什么是面向方面的编程?
我了解面向对象的程序设计,并且已经编写OO程序很长时间了。人们似乎在谈论面向方面的编程,但是我从来没有真正了解过它是什么或如何使用它。基本范式是什么?
温温酱
浏览 481
回答 3
3回答
芜湖不芜
AOP解决了横切关注点的问题,横切关注点可能是在不同方法中重复的任何类型的代码,通常无法像日志记录或验证那样被完全重构为自己的模块。因此,使用AOP,您可以将这些内容排除在主要代码之外,并按如下方式垂直定义:function mainProgram(){ var x = foo(); doSomethingWith(x); return x;}aspect logging{ before (mainProgram is called): { log.Write("entering mainProgram"); } after (mainProgram is called): { log.Write( "exiting mainProgram with return value of " + mainProgram.returnValue); } } aspect verification{ before (doSomethingWith is called): { if (doSomethingWith.arguments[0] == null) { throw NullArgumentException(); } if (!doSomethingWith.caller.isAuthenticated) { throw Securityexception(); } } }然后使用aspect-weaver将代码编译为以下内容:function mainProgram(){ log.Write("entering mainProgram"); var x = foo(); if (x == null) throw NullArgumentException(); if (!mainProgramIsAuthenticated()) throw Securityexception(); doSomethingWith(x); log.Write("exiting mainProgram with return value of "+ x); return x;}
0
0
0
繁星coding
为了完整性而从副本中复制(爱因斯坦):经典示例是安全性和日志记录。与其在您的应用程序内编写代码以记录x的出现或检查对象z的安全访问控制,不如使用普通代码的“带外”语言措辞,它可以系统地注入安全性或登录没有天真地将其包含在其中的例程这样一种方式,即使您的代码不提供它,它也会得到照顾。一个更具体的示例是操作系统提供对文件的访问控制。一个软件程序不需要检查访问限制,因为底层系统可以完成该工作。如果您认为根据我的经验需要AOP,则实际上确实需要投入更多的时间和精力来进行系统内适当的元数据管理,并着重考虑周全的结构/系统设计。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
源码
spark分组排序提取前N个值
1 回答
请问转让门店小程序需要源码吗?门店小程序有自己的源代码吗?是否要注册计算机软件著作权才可以交易?
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续