国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
敏捷思維: 架構(gòu)設(shè)計(jì)中的方法學(xué)(15)

敏捷思維: 架構(gòu)設(shè)計(jì)中的方法學(xué)(15)

進(jìn)一步閱讀

級(jí)別: 初級(jí)

林星, 項(xiàng)目經(jīng)理, 辰訊軟件工作室

2003 年 2 月 01 日

敏捷架構(gòu)設(shè)計(jì)一文到目前已經(jīng)全部結(jié)束,由于架構(gòu)設(shè)計(jì)是一個(gè)很大的話題,要在一篇文章中完全把架構(gòu)設(shè)計(jì)講清楚是很難的。因此本文的最后一個(gè)章節(jié)中提供了一組書(shū)籍和文章,這些資料都和架構(gòu)設(shè)計(jì)有關(guān),本文的寫(xiě)作過(guò)程也從中獲益良多,故而推薦給有興趣的讀者。

Refactoring To Patterns(Joshua Kerievsky)勿庸置疑,模式是軟件設(shè)計(jì)的一種有效的工具。但是在將模式和現(xiàn)實(shí)中的軟件設(shè)計(jì)關(guān)聯(lián)起來(lái)時(shí),很多人往往迷惑于模式到底是如何應(yīng)用的。結(jié)果是表現(xiàn)出兩種極端:一是用不好模式,二是過(guò)度的濫用模式。模式是他人設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),但是它在提供優(yōu)秀的設(shè)計(jì)思路的同時(shí)也會(huì)增加一定的復(fù)雜性。因此,不了解模式應(yīng)用的上下文環(huán)境而錯(cuò)誤的使用模式是非常危險(xiǎn)的。不但達(dá)不到原先的效果,而且會(huì)導(dǎo)致設(shè)計(jì)難以理解和設(shè)計(jì)團(tuán)隊(duì)溝通的困難。文章一開(kāi)始,作者就批評(píng)了濫用模式的做法。那么,到底要怎樣才算是正確的使用模式呢?作者借鑒了Martin Fowler的重構(gòu)方法。通過(guò)實(shí)際的例子,討論如何把一個(gè)普通的、不夠靈活、不具備擴(kuò)展性的設(shè)計(jì)重構(gòu)為一個(gè)優(yōu)美的設(shè)計(jì)模式。因此,本文的核心在于,如何識(shí)別哪些設(shè)計(jì)需要重構(gòu)?如何判斷重構(gòu)的時(shí)機(jī)?如何評(píng)價(jià)重構(gòu)前后的優(yōu)缺點(diǎn)?以及,如何進(jìn)行重構(gòu)?本書(shū)目前正在寫(xiě)作中,從http://industriallogic.com可以找到其草稿。在透明的網(wǎng)站和umlchina上,也可以找到部分的譯稿。在閱讀架構(gòu)重構(gòu)模式后,你可以再翻閱此文,這樣你就可以了解到該模式在代碼級(jí)別上的實(shí)現(xiàn)。

Effective Java(Joshua Bloch)此書(shū)的定位于編程習(xí)慣(Idiom)和良好的OO思維上。任何的設(shè)計(jì)都無(wú)法脫離最終的代碼。因此,擅長(zhǎng)于架構(gòu)設(shè)計(jì)的設(shè)計(jì)師一定也擁有渾厚的編碼功力。優(yōu)秀的軟件過(guò)程是由大量?jī)?yōu)秀的實(shí)踐拚接而成,架構(gòu)設(shè)計(jì)也是一樣的,它是由大量的代碼級(jí)的實(shí)踐累積起來(lái)的。此外,本書(shū)的很多討論都是關(guān)于如何進(jìn)行一個(gè)優(yōu)秀的OO設(shè)計(jì)的。在本文中,我們很多關(guān)于具體設(shè)計(jì)的討論都是基于OO設(shè)計(jì)的,在穩(wěn)定化模式中我們也討論了OO設(shè)計(jì)優(yōu)秀之處。因此,在了解架構(gòu)設(shè)計(jì)的基本思路后,閱讀此書(shū),你可以進(jìn)一步的了解和強(qiáng)化OO架構(gòu)的設(shè)計(jì)思路。順便一提,本書(shū)的中文版即將面世。

Writing Effective Use Case(Alistair Cockburn)文如其名,本書(shū)主要介紹了如何編寫(xiě)用例的知識(shí)。在架構(gòu)設(shè)計(jì)中,我們不斷的強(qiáng)調(diào)需求的重要性,可以說(shuō),沒(méi)有需求,就沒(méi)有架構(gòu)。那么,需求應(yīng)該如何組織呢?用例就是一種不錯(cuò)的需求組織方式,注意,用例并不能夠完全代替需求,類似于業(yè)務(wù)流程、非功能需求之類的需求都不是用例所擅長(zhǎng)的。本書(shū)的精華就在于它完整的介紹了敘述型用例的各個(gè)方面,從用例的范圍、角色、層次等方面描述了用例的構(gòu)成,并討論了用例的很多相關(guān)知識(shí)。更為寶貴的是,本書(shū)中包含了大量的實(shí)例。相較一些介紹用例圖的書(shū)而言,本書(shū)的定位更加的實(shí)踐化。一個(gè)優(yōu)秀的需求的價(jià)值在于,它能夠很容易的轉(zhuǎn)換為軟件開(kāi)發(fā)過(guò)程中其它實(shí)踐所需要的工件。如果我們仔細(xì)的體悟本書(shū)的話,我們會(huì)發(fā)現(xiàn)書(shū)中的很多思路都是基于此的。本書(shū)在市面上可以找到中文版和英文版兩種版本。

Thinking in Patterns(Bruce Eckel)Bruce Eckel的另外兩本書(shū)《Thinking in C++》和《Thinking in Java》可以說(shuō)是非常的出名。后者更是有三個(gè)版本,前兩個(gè)版本都有中文譯本,候捷老師更是親自翻譯了第二個(gè)版本,第三個(gè)版本目前正在寫(xiě)作中,從Bruce Eckel的網(wǎng)站( http://www.mindview.net)上可以下載到?!禩hinking in Patterns》目前也仍然處于寫(xiě)作中,但已經(jīng)略具規(guī)模了。Bruce Eckel從不同的應(yīng)用角度來(lái)討論模式之間的不同以及模式的內(nèi)涵。例如,對(duì)工廠模式的討論是從封裝對(duì)象創(chuàng)建的角度開(kāi)始討論的,對(duì)適配器模式的討論則是從改變接口的角度開(kāi)始討論的。模式的關(guān)鍵在于應(yīng)用,閱讀本書(shū),你能夠體會(huì)到這一點(diǎn)。

Java 與模式(閻宏)如果說(shuō)上述的一些好文都出自國(guó)外專家之手,那么這本書(shū)就是絕對(duì)的中文原創(chuàng)。本書(shū)的重點(diǎn)是討論隱藏在模式背后的面向?qū)ο笠?guī)律,并一一對(duì)各種設(shè)計(jì)模式進(jìn)行分析和實(shí)例研討。使用很多有趣的例子和運(yùn)用哲學(xué)思維來(lái)解釋模式是本書(shū)的兩大特色。在閱讀該書(shū)的時(shí)候,請(qǐng)注意區(qū)分技術(shù)細(xì)節(jié)和框架代碼。設(shè)計(jì)模式的好處就在于能夠根據(jù)上下文環(huán)境,設(shè)計(jì)出一個(gè)具有靈活性、擴(kuò)展性、低耦合度的框架來(lái)。這和架構(gòu)設(shè)計(jì)的思路是一樣的,不要在軟件開(kāi)發(fā)過(guò)程的早期考慮太多的細(xì)節(jié)。

Patterns of Enterprise Application Architecture(Martin Fowler)這是一本絕對(duì)的討論架構(gòu)設(shè)計(jì)模式的書(shū)了,但這里的架構(gòu)是特指企業(yè)信息系統(tǒng)的架構(gòu),這和本文討論的問(wèn)題域是一樣的。根據(jù)三層結(jié)構(gòu)的理論,本書(shū)的模式大致可以分為5類:表示層模式、邏輯層模式、數(shù)據(jù)層模式、分布式模式、以及一些基礎(chǔ)的模式。書(shū)的早期版本采用了這種分類法,在出版之后,模式的分類進(jìn)一步細(xì)化。例如數(shù)據(jù)層模式就被進(jìn)一步的區(qū)分為數(shù)據(jù)源架構(gòu)模式、對(duì)象-關(guān)系行為模式、對(duì)象-關(guān)系結(jié)構(gòu)模式、對(duì)象-關(guān)系元數(shù)據(jù)映射模式等。本書(shū)的內(nèi)容覆蓋面很廣,Martin Fowler在素材的組織上擁有非常優(yōu)異的才能,當(dāng)年的《重構(gòu)》一書(shū)就是這方面的例證。閱讀本書(shū),你會(huì)對(duì)架構(gòu)設(shè)計(jì)的技術(shù)層面有著很深的了解,但是,應(yīng)該注意,書(shū)中的一些模式雖然看起來(lái)簡(jiǎn)單,但是如果要真正實(shí)現(xiàn),卻需要花費(fèi)大量的精力,因此,聽(tīng)從《Refactoring To Patterns》一書(shū)和本文重構(gòu)模式的建議吧,只有在需要的時(shí)候才把設(shè)計(jì)重構(gòu)為模式。

Dealing with Roles(Martin Fowler)這只是一篇小短文,討論的重點(diǎn)是關(guān)于角色處理的知識(shí),但作者從面向?qū)ο蟮幕A(chǔ)知識(shí)出發(fā),討論了如何根據(jù)需求的不同,來(lái)進(jìn)行不同的設(shè)計(jì),并用實(shí)際的例子,演示了設(shè)計(jì)是如何變化的。這種思想和本文提倡的思想是非常的相似的,架構(gòu)設(shè)計(jì)不能夠獨(dú)立于需求而存在。建議不論是對(duì)面向?qū)ο笤O(shè)計(jì)有興趣還是對(duì)軟件工程有興趣的人都可以閱讀此文。在Martinfowler的網(wǎng)站上(http://www.martinfowler.com)可以找到本文,次外,網(wǎng)站上還有其它一些優(yōu)秀作品,《Dealing with Properties》就是其中的一篇。我曾經(jīng)為《Dealing with Roles》一問(wèn)撰寫(xiě)了一篇讀書(shū)筆記,發(fā)布在點(diǎn)空間上(http://www.dotspace.twmail.net/patternscolumn/analysis%20patterns/RoseModelingNotes_S.htm),如果有興趣,也可以指導(dǎo)一二。

《Framework Process Patterns》(James Carey,Brent Carlson)本書(shū)的作者是IBM公司的成員,他們有著面向?qū)ο蟛僮飨到y(tǒng)和企業(yè)應(yīng)用框架的設(shè)計(jì)經(jīng)驗(yàn),而后者,這是著名的IBM SanFrancisco框架。他們把框架設(shè)計(jì)中學(xué)習(xí)到的知識(shí)整理為過(guò)程模式的形式,書(shū)中并沒(méi)有太多的理論,但處處都體現(xiàn)出了作者的豐富經(jīng)驗(yàn)。在閱讀本書(shū)的時(shí)候,要時(shí)刻牢記其推介的框架設(shè)計(jì)的特點(diǎn),再結(jié)合自己工作的具體情況,來(lái)理解和應(yīng)用這些模式。不要盲目的把書(shū)中介紹的模式應(yīng)用于自身,這是我的忠告。本書(shū)的中文版由我和一位朋友翻譯,將不日面世。

IBM Sanfrancisco 框架,這并不是一本書(shū),而是一個(gè)現(xiàn)實(shí)中的產(chǎn)品。IBM根據(jù)市場(chǎng)經(jīng)驗(yàn),設(shè)計(jì)了一個(gè)企業(yè)應(yīng)用框架,定位于為企業(yè)應(yīng)用開(kāi)發(fā)者提供通用的組件。從這個(gè)產(chǎn)品中,你可以充分的了解到模式是如何應(yīng)用在一個(gè)成熟的產(chǎn)品中的。要了解這個(gè)產(chǎn)品的設(shè)計(jì)思路,關(guān)鍵是要先了解它的層次劃分。SanFrancisco框架總共分為三個(gè)層次:Foundation Layer、Common Business Objects Layer、Core Business Process Layer。Foundation Layer定義了基礎(chǔ)的類以及類的使用策略,例如工廠類來(lái)負(fù)責(zé)所有對(duì)象的創(chuàng)建;Common Business Objects Layer定義了企業(yè)中的一些通用對(duì)象,例如公司、帳戶、客戶等,而Core Business Process Layer定義了企業(yè)應(yīng)用所需要的關(guān)鍵業(yè)務(wù)流程,包括會(huì)計(jì)框架、應(yīng)收應(yīng)付、訂單處理、庫(kù)存管理幾個(gè)方面。這三個(gè)層次可以進(jìn)行獨(dú)立的重用,越高的層次的重用價(jià)值越大。在理解這樣一個(gè)產(chǎn)品的時(shí)候,我們要有這樣的思路,對(duì)于一個(gè)大型的產(chǎn)品來(lái)說(shuō),一致性有時(shí)候是重于其它的價(jià)值的,例如,在對(duì)象創(chuàng)建方面,產(chǎn)品統(tǒng)一使用了工廠模式,而在屬性處理上,統(tǒng)一使用了動(dòng)態(tài)屬性的設(shè)計(jì)方式。雖然有些地方并不需要用到這兩種設(shè)計(jì)模式,但是為了保持設(shè)計(jì)的一致性,還是必須使用該模式。這一點(diǎn)對(duì)于普通的項(xiàng)目開(kāi)發(fā)或是小產(chǎn)品開(kāi)發(fā)來(lái)說(shuō)可能未必適用,但是對(duì)于大型的項(xiàng)目或產(chǎn)品來(lái)說(shuō)就顯得非常的重要了。



Applying Patterns(Frank Buschmann)這是一篇用過(guò)程模式語(yǔ)言來(lái)描述如何在實(shí)際中應(yīng)用設(shè)計(jì)模式的文章。文章短小精悍,把設(shè)計(jì)模式的應(yīng)用總結(jié)為幾種模式,沒(méi)有提供具體的實(shí)例是個(gè)遺憾。對(duì)正在學(xué)習(xí)設(shè)計(jì)模式的人而言,花一些時(shí)間了解別人是如何應(yīng)用設(shè)計(jì)模式是很有必要的。在點(diǎn)空間上可以找到原文鏈接和繁體版譯文。本文的架構(gòu)愿景模式就參考了這篇文章中的內(nèi)容。

重構(gòu)(Martin Fowler)其實(shí)本書(shū)已經(jīng)不用再介紹了,他的價(jià)值就在于他能夠把程序員日常的很多優(yōu)秀做法提升到理論的階段,并為更多的程序員提供指導(dǎo)。這也是我在上文夸獎(jiǎng)Martin Fowler具有優(yōu)異的組織才能的一大原因。遺憾的是,本書(shū)一直沒(méi)有中文譯本,不過(guò)這個(gè)遺憾即將結(jié)束,候捷和透明正在合譯此書(shū),相信不久之后就可以一飽眼福。 http://www.refactoring.com是Martin Fowler創(chuàng)建的重構(gòu)的討論站點(diǎn),上面也會(huì)很多的相關(guān)內(nèi)容。而關(guān)于重構(gòu)的另一方面的消息是,現(xiàn)在已經(jīng)有越來(lái)越多的建模工具將重構(gòu)作為重要的特性之一,這無(wú)疑能夠?yàn)槌绦騿T節(jié)省大量的精力。

http://www.agiledata.org(Scott W. Ambler) 這是Scott W. Ambler 最新維護(hù)的一個(gè)網(wǎng)站,也代表了Agile方法發(fā)展的一個(gè)方向――如何以敏捷的姿態(tài)進(jìn)行數(shù)據(jù)庫(kù)項(xiàng)目的開(kāi)發(fā)。在讀過(guò)站點(diǎn)的內(nèi)容之后,你會(huì)了解到如何做好數(shù)據(jù)庫(kù)項(xiàng)目的開(kāi)發(fā)。目前,本站點(diǎn)還在Scott W. Ambler的維護(hù)下不斷的更新。數(shù)據(jù)庫(kù)設(shè)計(jì)一直不是面向?qū)ο箨嚑I(yíng)強(qiáng)調(diào)的一個(gè)重點(diǎn),基本的觀點(diǎn)認(rèn)為,關(guān)鍵是類的設(shè)計(jì)足夠規(guī)范,數(shù)據(jù)庫(kù)并不是主要問(wèn)題。但是在實(shí)際的項(xiàng)目中,數(shù)據(jù)庫(kù),特別是關(guān)系型數(shù)據(jù)庫(kù)往往是無(wú)法忽略的部分,包括數(shù)據(jù)庫(kù)模式的設(shè)計(jì)、性能優(yōu)化、數(shù)據(jù)庫(kù)連接管理、數(shù)據(jù)操縱語(yǔ)言。除此之外,遺留數(shù)據(jù)庫(kù)、并發(fā)問(wèn)題、安全,關(guān)系數(shù)據(jù)到對(duì)象的映射,業(yè)務(wù)邏輯處理,這些都是需要在架構(gòu)設(shè)計(jì)的時(shí)候就加以考慮的問(wèn)題。在本文中并沒(méi)有專門(mén)的章節(jié)對(duì)數(shù)據(jù)庫(kù)相關(guān)的知識(shí)進(jìn)行討論,因?yàn)閿?shù)據(jù)庫(kù)的討論最好是結(jié)合具體的數(shù)據(jù)庫(kù)進(jìn)行。如果大家在架構(gòu)設(shè)計(jì)中存在數(shù)據(jù)庫(kù)方面的問(wèn)題,可以參考這個(gè)網(wǎng)站。

Designing for Scalability with Microsoft Windows DNA(Sten Sundblad)目前關(guān)于討論微軟體系平臺(tái)設(shè)計(jì)的優(yōu)秀書(shū)籍不多,而本書(shū)正是其中之一。本書(shū)介紹了DNA體系下設(shè)計(jì)一個(gè)分層架構(gòu)所要注意的問(wèn)題。其核心思想是避免純理論的面向?qū)ο笤O(shè)計(jì)。例如,書(shū)中在介紹領(lǐng)域?qū)ο蟮臅r(shí)候,建議將只讀對(duì)象和可寫(xiě)對(duì)象分開(kāi)處理,這樣,只讀對(duì)象就不需要COM+的支持,能夠提高效率,但這是不符合面向?qū)ο蟮脑O(shè)計(jì)的封裝思路的。另外,為了能夠使用對(duì)象緩沖池技術(shù),本書(shū)提議在設(shè)計(jì)業(yè)務(wù)對(duì)象的時(shí)候不要包括狀態(tài)數(shù)據(jù),這和類包括數(shù)據(jù)和行為的基本思路也是相斥的。從這本書(shū)中,我們可以了解到現(xiàn)實(shí)系統(tǒng)的設(shè)計(jì)和經(jīng)典面向?qū)ο笏枷胫g的辨正關(guān)系。

設(shè)計(jì)數(shù)據(jù)層組件并在層間傳遞數(shù)據(jù)(Angela Crocker、Andy Olsen 和 Edward Jezierski) 這是另一篇討論windows體系平臺(tái)的文章。微軟的產(chǎn)品適合于小型的開(kāi)發(fā),一方面和具體的技術(shù)有關(guān),另一方面也和體系結(jié)構(gòu)的設(shè)計(jì)有關(guān)。windows體系結(jié)構(gòu)的特點(diǎn)是快速開(kāi)發(fā),因此在一些小型的項(xiàng)目中,使用微軟產(chǎn)品的開(kāi)發(fā)速度較快,但是隨著項(xiàng)目規(guī)模的增大,快速開(kāi)發(fā)伴隨著的結(jié)構(gòu)性欠佳的問(wèn)題就逐漸顯露出來(lái)了。因此,文章的主要內(nèi)容就是如何優(yōu)化結(jié)構(gòu)。其主要的思路是對(duì)系統(tǒng)進(jìn)行分層,并實(shí)現(xiàn)層間數(shù)據(jù)傳遞的策略。這兩點(diǎn)不論是在哪一類型的體系中都是關(guān)鍵性的問(wèn)題,在分層模式中,我們也曾經(jīng)對(duì)這兩個(gè)問(wèn)題做了大篇幅的討論。和Java體系相比,Window體系有其特殊的一面,也能夠起到他山之石的效果。

EJB Design Patterns(Floyd Marinescu)本書(shū)分為兩個(gè)部分,第一個(gè)部分重點(diǎn)討論了如何在一個(gè)分層體系中應(yīng)用模式語(yǔ)言,并分別針對(duì)架構(gòu)設(shè)計(jì)、數(shù)據(jù)傳輸(即上一段中討論的層間傳送數(shù)據(jù))、事務(wù)和持久性、服務(wù)端和客戶端交互、主鍵生成策略等主題討論了可能的設(shè)計(jì)模式。第二部分討論了EJB設(shè)計(jì)過(guò)程中的實(shí)踐活動(dòng)和過(guò)程。雖然本文的所有內(nèi)容都是針對(duì)EJB設(shè)計(jì)的,但是其思路同樣可以借鑒于其它體系。本書(shū)的電子書(shū)在Middleware網(wǎng)站上可以下載到。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
軟件設(shè)計(jì)經(jīng)典書(shū)籍推薦
好書(shū)甄選 | 70+移動(dòng)應(yīng)用UI設(shè)計(jì)模式《UI Patterns for Mobile Applications》
關(guān)于“架構(gòu)”與“框架”、“模式”與“模型”的思考
馬上著手開(kāi)發(fā) iOS 應(yīng)用程序:設(shè)計(jì)模式
Yii2設(shè)計(jì)模式——Yii2中用到哪些設(shè)計(jì)模式?
軟件模式 http://www.uml.org.cn/sjms/200605153.htm
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服