函數封裝可以看作是對語句流中的一個區間(range)的抽象(基本等價于一個點抽象),而AOP (Aspect Oriented Programming)則定義了一維線性結構(程序文本)中的區間的邊(boundary)。在未有aop之前為了定義這種boundary, 我們往往不得不借助于繼承技術,通過在基類(base class)中預先定義所需的結構來打破函數的原子性。例如
class BaseClass{
public void doSomething(){
before();
reallyDo():
after();
}
class BaseClass{
public void doSomething(){
before();
reallyDo():
after();
}
protected void before(){}
protected void after(){}
}
class ExtClass extends BaseClass{
protected void before(){
....
}
}
根據拓撲學(topology),二維情況下最重要的拓撲結構是所謂的環(loop)。例如,在界面上我們經常將各種不同的內容放置在某一類固定的邊框中,一種好的界面技術應該能夠將這種邊框獨立的抽象出來。在witrix平臺的tpl模板語言中,我們通過bodyTag可以輕易的實現這一抽象。
<app:普通消息邊框>
<input type="text" value="name" />
...
</app:普通消息邊框>
這種抽象其實已經超出了AOP的范疇。