Posted on 2005-11-14 15:37
canonical 閱讀(288)
評(píng)論(0) 編輯 收藏 所屬分類:
設(shè)計(jì)理論
函數(shù)封裝可以看作是對(duì)語(yǔ)句流中的一個(gè)區(qū)間(range)的抽象(基本等價(jià)于一個(gè)點(diǎn)抽象),而AOP (Aspect Oriented Programming)則定義了一維線性結(jié)構(gòu)(程序文本)中的區(qū)間的邊(boundary)。在未有aop之前為了定義這種boundary, 我們往往不得不借助于繼承技術(shù),通過(guò)在基類(base class)中預(yù)先定義所需的結(jié)構(gòu)來(lái)打破函數(shù)的原子性。例如
class BaseClass{
public void doSomething(){
before();
reallyDo():
after();
}
protected void before(){}
protected void after(){}
}
class ExtClass extends BaseClass{
protected void before(){
....
}
}
根據(jù)拓?fù)鋵W(xué)(topology),二維情況下最重要的拓?fù)浣Y(jié)構(gòu)是所謂的環(huán)(loop)。例如,在界面上我們經(jīng)常將各種不同的內(nèi)容放置在某一類固定的邊框中,一種好的界面技術(shù)應(yīng)該能夠?qū)⑦@種邊框獨(dú)立的抽象出來(lái)。在witrix平臺(tái)的tpl模板語(yǔ)言中,我們通過(guò)bodyTag可以輕易的實(shí)現(xiàn)這一抽象。
<app:普通消息邊框>
<input type="text" value="name" />
...
</app:普通消息邊框>
這種抽象其實(shí)已經(jīng)超出了AOP的范疇。