Giver arne ret AOP er godt til bl.a. at trace hvilke metoder der bliver kaldt/eksekveret returneret fra osv. AOP findes bl.a til C++, Java og .NET. Til java kan du bruge AspectJ som er en udvidelse tilæ Java. AspectJ compilereren("ajc") producerer klasser der kan køre på Java platforme 1.1 eller senere. Der findes et udmærket plugin til Eclipse.
Du kan jo kigge på
http://eclipse.org/aspectj/Smider lige et lille eksempel:
//Simple kalder metoden printMessage()
public class Simple
{
public void printMessage()
{
System.out.println("Hello World");
}
public static void main(String argv[])
{
Simple obj = new Simple();
obj.printMessage();
}
}
/*
* min aspect source kode.
*
* jeg holder øje med kald til metoden printMessage i klassen Simple.
* metoden har signaturen: void og ingen indparametre
*/
spect Trace
{
pointcut printOuts(): // navngivet pointcut printOuts
call(void Simple.printMessage());
before(): printOuts() // before advice
{
System.out.println("-> Before Calling");
}
after(): printOuts() // after advice
{
System.out.println("<- after Calling");
}
}
Der er bl.a. 2 ting at bemærk i dette eksempel
Pointcut:
Udvælger bestemte punkter ved eksekvering af et program("join points"). Punkter er f.eks: kald til en metode, returnering fra en metode, eksekvering af en metode osv ...
Advice:
Et pointcut udvælger kun punkter. For at udføre noget ved et punkt
skal der implementeres opførstel. Dette gøres med et advice. Et advice kan
sammenlignes med en metode i Java
Udskriften vil se således ud i en console:
-> Before Calling
Hello World
<- after Calling
Dette er kun meget lidt information med skulle give dig en ide om hvad AOP/AspectJ er.
NB: er ikke ude efter point. Håber såmænd bare at andre også kommer til at synes at AOP er et nyttigt paradigme :-)