學(xué)習(xí)GoF設(shè)計(jì)模式的重要性

字號(hào):

GoF的《設(shè)計(jì)模式》也許你沒(méi)有聽說(shuō)過(guò),但是《Thingking in Java》(Java編程思想)你應(yīng)該知道甚至讀過(guò)吧!
    在瀏覽《Thingking in Java》(第一版)時(shí),你是不是覺(jué)得好象這還是一本Java基礎(chǔ)語(yǔ)言書籍?但又不純粹是,因?yàn)檫@本書的作者將面向?qū)ο蟮乃枷肭擅畹娜诤显贘ava的具體技術(shù)上,潛移默化的讓你感覺(jué)到了一種新的語(yǔ)言和新的思想方式的誕生。
    但是讀完這本書,你對(duì)書中這些蘊(yùn)含的思想也許需要一種更明晰更系統(tǒng)更透徹的了解和掌握,那么你就需要研讀GoF的《設(shè)計(jì)模式》了。
    《Thingking in Java》(第一版中文)是這樣描述設(shè)計(jì)模式的:他在由Gamma, Helm和Johnson Vlissides簡(jiǎn)稱Gang of Four(四人幫),縮寫GoF編著的《Design Patterns》一書中被定義成一個(gè)“里程碑”。事實(shí)上,那本書現(xiàn)在已成為幾乎所有OOP(面向?qū)ο蟪绦蛟O(shè)計(jì))程序員都必備的參考書。(在國(guó)外是如此)。
    GoF的《設(shè)計(jì)模式》是所有面向?qū)ο笳Z(yǔ)言(C++ Java C#)的基礎(chǔ),只不過(guò)不同的語(yǔ)言將之實(shí)現(xiàn)得更方便地使用。
    GOF的設(shè)計(jì)模式是一座"橋"
    就Java語(yǔ)言體系來(lái)說(shuō),GOF的設(shè)計(jì)模式是Java基礎(chǔ)知識(shí)和J2EE框架知識(shí)之間一座隱性的"橋"。
    會(huì)Java的人越來(lái)越多,但是一直徘徊在語(yǔ)言層次的程序員不在少數(shù),真正掌握J(rèn)ava中接口或抽象類的應(yīng)用不是很多,大家經(jīng)常以那些技術(shù)只適合大型項(xiàng)目為由,避開或忽略它們,實(shí)際中,Java的接口或抽象類是真正體現(xiàn)Java思想的核心所在,這些你都將在GoF的設(shè)計(jì)模式里領(lǐng)略到它們變幻無(wú)窮的魔力。
    GoF的設(shè)計(jì)模式表面上好象也是一種具體的"技術(shù)",而且新的設(shè)計(jì)模式不斷在出現(xiàn),設(shè)計(jì)模式自有其自己的發(fā)展軌道,而這些好象和J2EE .Net等技術(shù)也無(wú)關(guān)!
    實(shí)際上,GoF的設(shè)計(jì)模式并不是一種具體"技術(shù)",它講述的是思想,它不僅僅展示了接口或抽象類在實(shí)際案例中的靈活應(yīng)用和智慧,讓你能夠真正掌握接口或抽象類的應(yīng)用,從而在原來(lái)的Java語(yǔ)言基礎(chǔ)上躍進(jìn)一步,更重要的是,GoF的設(shè)計(jì)模式反復(fù)向你強(qiáng)調(diào)一個(gè)宗旨:要讓你的程序盡可能的可重用。
    這其實(shí)在向一個(gè)極限挑戰(zhàn):軟件需求變幻無(wú)窮,計(jì)劃沒(méi)有變化快,但是我們還是要尋找出不變的東西,并將它和變化的東西分離開來(lái),這需要非常的智慧和經(jīng)驗(yàn)。
    而GoF的設(shè)計(jì)模式是在這方面開始探索的一塊里程碑。
    J2EE等屬于一種框架軟件,什么是框架軟件?它不同于我們以前接觸的Java API等,那些屬于Toolkist(工具箱),它不再被動(dòng)的被使用,被調(diào)用,而是深刻的介入到一個(gè)領(lǐng)域中去,J2EE等框架軟件設(shè)計(jì)的目的是將一個(gè)領(lǐng)域中不變的東西先定義好,比如整體結(jié)構(gòu)和一些主要職責(zé)(如數(shù)據(jù)庫(kù)操作 事務(wù)跟蹤 安全等),剩余的就是變化的東西,針對(duì)這個(gè)領(lǐng)域中具體應(yīng)用產(chǎn)生的具體不同的變化需求,而這些變化東西就是J2EE程序員所要做的。