今天面試一個牛人,跟我們談起了他做過從UML到生成代碼的工作,而這正是俺發(fā)展的目標(biāo)-架構(gòu)設(shè)計。所以當(dāng)時我就問了下他跟架構(gòu)設(shè)計密切相關(guān)的設(shè)計模式的一個-橋接模式,他沒接觸過。
晚上回來,我本來想把個系統(tǒng)源碼再研究下,好方便下一步的工作,但總覺得自己少做了些什么。
架構(gòu)設(shè)計決定著軟件產(chǎn)品。
這是我以前經(jīng)常聽到的一句話,但現(xiàn)在的項(xiàng)目,對于我來說,就是把一些比較出名穩(wěn)定的開源架構(gòu)拼接起來,比如SSH(spring+struts+hibernate),很慚愧,這就是我的架構(gòu)。
大家都說開始的架構(gòu)是最難的,需要調(diào)研同類產(chǎn)品的情況以及技術(shù)特征,了解當(dāng)前世界上對這種產(chǎn)品所能提供的理論支持和技術(shù)平臺支持。再結(jié)合自己項(xiàng)目的特點(diǎn)(需要透徹的系統(tǒng)分析),然后逐步形成自己項(xiàng)目的架構(gòu)。
然而,做項(xiàng)目的我們,都深有體會,總是抱怨客戶的需求老是在改變。往往問題本身并不是很困難,但是代碼維護(hù)性的要求總是很高 ,但往往我們做到后期就很難去重新架構(gòu)自己的項(xiàng)目(導(dǎo)制這方面的因素很多)、豐富完善了設(shè)計方案。
工程項(xiàng)目方法(RUP或XP )為我們提供了架構(gòu)設(shè)計的正確完成保證。
運(yùn)用成熟的模式設(shè)計進(jìn)行架構(gòu)設(shè)計成為了必然,設(shè)計模式成為支撐架構(gòu)的一種重要組件,但如果為了模式而架構(gòu)又會成為你項(xiàng)目的絆腳石,所以,如何正確的應(yīng)用又成為了一個很重要的課題,但這些前提都是以熟悉各種設(shè)計模式為前提的,這其中最重要的一點(diǎn)就是:時刻牢記架構(gòu)設(shè)計的目標(biāo)。
把握目標(biāo)的點(diǎn),我從網(wǎng)上扣了過來(哈哈~~~,有網(wǎng)絡(luò)就是好)
1. 最大化的重用:
這個重用包括組件重用和設(shè)計模式使用等多個方面。
比如,我們項(xiàng)目中有用戶注冊和用戶權(quán)限系統(tǒng)驗(yàn)證,這其實(shí)是個通用課題,每個項(xiàng)目只是有其內(nèi)容和一些細(xì)微的差別,如果我們之前有這方面成功研發(fā)經(jīng)驗(yàn),可以直接重用,如果沒有,那么我們就要進(jìn)行這個子項(xiàng)目的研發(fā),在研發(fā)過程中,不能僅僅看到這個項(xiàng)目的需求,也要以架構(gòu)的概念去完成,這個可以稱為組件的子項(xiàng)目。
2. 盡可能的簡單明了
我們解決問題的總方向是將復(fù)雜問題簡單化,其實(shí)這也是中間件或多層體系技術(shù)的根本目標(biāo)。但是在具體實(shí)施設(shè)計過程中,我們可能會將簡單問題復(fù)雜化,特別是設(shè)計模式的運(yùn)用上很容易范這個錯誤,因此如何盡可能的做到設(shè)計的簡單明了是不容易的。
落實(shí)到每個類的具體實(shí)現(xiàn)上要真正能體現(xiàn)系統(tǒng)事物的本質(zhì)特征,因?yàn)槭挛锏谋举|(zhì)特征只有一個,你的代碼越接近它,表示你的設(shè)計就是簡單明了,越簡單明了,你的系統(tǒng)就越可靠。更多情況是,一個類并不能反應(yīng)事物本質(zhì),需要多個類的組合協(xié)調(diào),那么能夠正確使用合適的設(shè)計模式就稱為重中之重。
我們看一個具備好的架構(gòu)設(shè)計的系統(tǒng)代碼時,基本看到的都是設(shè)計模式,寵物店(pet store)就是這樣的例子。或者可以這樣說,一個好的架構(gòu)設(shè)計基本是由簡單明了的多個設(shè)計模式相互配合完成的。
3. 最靈活的拓展性
架構(gòu)設(shè)計要具備靈活性 拓展性,這樣,用戶可以在你的架構(gòu)上進(jìn)行二次開發(fā)或更加具體的開發(fā)。而要具備靈活的拓展性,就要站在理論的高度去進(jìn)行架構(gòu)設(shè)計。
比如現(xiàn)在工作流概念逐步流行,因?yàn)槲覀兙唧w很多實(shí)踐項(xiàng)目中都有工作流的影子,工作流中有一個樹形結(jié)構(gòu)權(quán)限設(shè)定的概念就對很多領(lǐng)域比較通用。樹形結(jié)構(gòu)是組織信息的基本形式,我們現(xiàn)在看到的網(wǎng)站或者ERP前臺都是以樹形菜單來組織功能的,那么我們在進(jìn)行架構(gòu)設(shè)計時,就可以將樹形結(jié)構(gòu)和功能分開設(shè)計,他們之間聯(lián)系可以通過樹形結(jié)構(gòu)的節(jié)點(diǎn)link在一起,就象我們可以在圣誕樹的樹枝上掛各種小禮品一樣,這些小禮品就是我們要實(shí)現(xiàn)的各種功能。有了這個概念,通常比較難實(shí)現(xiàn)的用戶級別權(quán)限控制也有了思路,將具體用戶或組也是和樹形結(jié)構(gòu)的節(jié)點(diǎn)link在一起,這樣就間接實(shí)現(xiàn)了用戶對相應(yīng)功能的權(quán)限控制,有了這樣的基本設(shè)計方案的架構(gòu)無疑具備很靈活的拓展性。
posted on 2007-06-20 23:45
李大嘴 閱讀(456)
評論(0) 編輯 收藏