看過(guò)微雨心晴(X-Brave)的對(duì)架構(gòu)、框架、基礎(chǔ)件三者關(guān)系的論述后,我陷入了一陣不安和恐慌之中。
發(fā)現(xiàn)我原來(lái)對(duì)軟件框架的理解還是那樣的淺溥,并由此想起,應(yīng)該不只我一個(gè)是這樣,我想大多數(shù)的開(kāi)發(fā)人員在從普通的程序員向架構(gòu)設(shè)計(jì)轉(zhuǎn)型時(shí)都會(huì)遇到的這樣的問(wèn)題,在闡述的這個(gè)問(wèn)題之前有必要將這三都的關(guān)系描述一下(這里就直接引用微雨心晴(X-Brave)的描述):
從層次結(jié)構(gòu)來(lái)看,軟件架構(gòu)是從整體上來(lái)看軟件設(shè)計(jì)開(kāi)發(fā)的,框架通常是從較高的層次來(lái)實(shí)現(xiàn)或者被選擇來(lái)實(shí)現(xiàn)軟件的架構(gòu),基礎(chǔ)件/類是更小的軟件元素,只是更加的強(qiáng)調(diào)通用。 三者之間存在微妙的關(guān)系,以至于確實(shí)容易引起人們的混淆。實(shí)際上,試圖完全的割裂它們即使不是錯(cuò)誤的做法,也常常不是良好的設(shè)計(jì):三者之間存在緊密的依賴關(guān)系.
我很贊同這種說(shuō)法,現(xiàn)在我來(lái)描述我以前設(shè)計(jì)系統(tǒng)框架時(shí)的問(wèn)題所在:
最初在第一次擔(dān)任框架設(shè)計(jì)時(shí),總是從功能類出發(fā)。
即:先考慮系統(tǒng)有哪些復(fù)雜而又頻繁使用的類,對(duì)這此類進(jìn)行分包,歸類,并命名為UTILS。
然后再是對(duì)系統(tǒng)分層,分包,幾乎沒(méi)有多少中間接口,相臨層之間總是緊耦合的調(diào)用,造成了層與層的改動(dòng)牽連邊過(guò)大。
寫(xiě)出來(lái)的框架就像工具包一樣,由一大堆看起來(lái)沒(méi)有聯(lián)系的類堆積而成。
后來(lái),經(jīng)歷過(guò)一次大項(xiàng)目后,開(kāi)始關(guān)注一些建模理論以及開(kāi)源框架,對(duì)先前的框架設(shè)計(jì)思想產(chǎn)生極大的沖擊,開(kāi)始關(guān)注系統(tǒng)的整體搭配,接口解耦,代碼重用,自動(dòng)化控制程度有所提高。
但感覺(jué)問(wèn)題還是依然很?chē)?yán)峻,主要表現(xiàn)在:對(duì)系統(tǒng)的把握層次仍然偏低(從代碼角度出發(fā)),缺乏對(duì)系統(tǒng)整體的抽象能力和建模能力。對(duì)零散的業(yè)務(wù)規(guī)則難以抽象出很好的業(yè)務(wù)模型并以與系統(tǒng)架構(gòu)結(jié)合起來(lái)。
總的來(lái)說(shuō)我經(jīng)歷了兩個(gè)階段:1。以公用基礎(chǔ)件為核心的積木式開(kāi)發(fā) 2。以局部框架結(jié)構(gòu)(實(shí)現(xiàn))為起點(diǎn),分層整合的泛射式開(kāi)發(fā)(最明顯的問(wèn)題就是層層之間不成一體,項(xiàng)目越大越到后期就越松散變得越來(lái)越難以控制)
目前,開(kāi)始將目光從系統(tǒng)業(yè)務(wù)層面出發(fā),以架構(gòu)為主,逐步向框架結(jié)構(gòu)設(shè)計(jì)過(guò)渡的方向發(fā)展,但這時(shí)常令我感到力不從心,畢境理論歸理論,現(xiàn)實(shí)中還需要豐富的實(shí)踐經(jīng)驗(yàn)去累積。