Posted on 2005-11-15 12:35
canonical 閱讀(253)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
設(shè)計(jì)理論
經(jīng)常有人說(shuō)XX技術(shù)是面向復(fù)雜應(yīng)用的,對(duì)于常規(guī)應(yīng)用如果采用那是得不償失。我想很多情況下這只是體現(xiàn)了該技術(shù)的不適
應(yīng)性。我主張系統(tǒng)設(shè)計(jì)應(yīng)該盡量體現(xiàn)一種共振原則,即系統(tǒng)架構(gòu)只有一個(gè),但是面向復(fù)雜的應(yīng)用,它表現(xiàn)出復(fù)雜的特性,能夠辨識(shí)精細(xì)的概念,而面向簡(jiǎn)單應(yīng)用,可
以實(shí)現(xiàn)一種優(yōu)雅的退化(degradation),
對(duì)外暴露出一種簡(jiǎn)單的結(jié)構(gòu)。抽象的說(shuō),我們所建立的不是一個(gè)孤立的模型,而是一個(gè)模型的系列,不是一個(gè)綁定應(yīng)用的solution而是一種
strategy,在每一個(gè)復(fù)雜性層次上,都存在著對(duì)應(yīng)的解決方案,而不同復(fù)雜性層次上的模型之間又存在著清晰的演化路徑。這也是我所提出的級(jí)列設(shè)計(jì)理論
的要點(diǎn)之一。
在jsplet框架的設(shè)計(jì)中,充分體現(xiàn)了這一點(diǎn)。
jsplet中通過(guò)如下url格式來(lái)訪問(wèn)web應(yīng)用:
view.jsp?objectName=xxx&objectEvent=yyy&eventTarget=ZZZ
其中objectName的格式規(guī)定如下
objectScope@objectType$objectInstanceId
在系統(tǒng)的規(guī)模較小,不需要對(duì)象的生命周期控制的情況下,我們可以將所有對(duì)象都放在根路徑下/。
在同類(lèi)型的對(duì)象只有一個(gè)實(shí)例的情況下,我們可以不使用objectInstanceId。
在一個(gè)頁(yè)面對(duì)應(yīng)一個(gè)模型對(duì)象的情況下,我們可以不使用eventTarget參數(shù)。
當(dāng)頁(yè)面比較簡(jiǎn)單的情況下,我們可以直接使用jsp輸出頁(yè)面,而不用使用其它頁(yè)面模板機(jī)制。(采用jsp作為view原因很簡(jiǎn)單,jsp是標(biāo)準(zhǔn),它應(yīng)該成為其它所有第三方模板技術(shù)的入口)
為了支持jsplet的url中所體現(xiàn)出的概念,只需要1000行不到的代碼,但是隨著復(fù)雜性的增加,我們可以增加越來(lái)越多的功能,這體現(xiàn)在url格式的細(xì)化上,但是整體的程序結(jié)構(gòu)并沒(méi)有發(fā)生改變。