gpt4 book ai didi

aop - 什么是面向方面编程?

转载 作者:行者123 更新时间:2023-12-03 04:08:27 24 4
gpt4 key购买 nike

我了解面向对象编程,并且已经编写OO程序很长时间了。人们似乎在谈论面向方面的编程,但我从未真正了解它是什么或如何使用它。基本范式是什么?

这个问题是相关的,但并没有完全提出:

Aspect-Oriented Programming vs. Object Oriented Programming

最佳答案

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();
}
}
}

然后使用切面编织器将代码编译为:

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;
}

关于aop - 什么是面向方面编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/242177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com