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

字號:

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