閻宏
,1964年出生于天津市。1987年畢業(yè)于中國科技大學(xué)近代物理系,1990年于中科院理論物理所獲碩士學(xué)位,1992年獲博士學(xué)位,翌年赴日本京都大學(xué)進行博士后研究工作。
作者曾于美國花旗銀行(Citibank)、湯臣金融(Thomson Financial)、奧本海默基金(Oppenheimer)等處供職,進行了多年的軟件開發(fā)、架構(gòu)設(shè)計和技術(shù)管理工作。
閻宏博士對面向?qū)ο罄碚摵驮O(shè)計模式有精到的見解,對中國的古典智慧也有深厚的積淀,更為難得的是能夠把兩者融洽地結(jié)合起來。閱讀閻宏博士的文章,你會發(fā)現(xiàn)文章中處處閃爍著作者智慧的光點。閻宏博士著有《Java與模式》一書,本專欄編輯了閻宏博士的幾篇文章和書中的一些章節(jié),以饗讀者。
您閱讀后有什么感想,歡迎在JR論壇中發(fā)貼和大家討論。同時,也可以與作者聯(lián)系:JavaPatterns@hotmail.com。
1. 什么是模式
什么是模式,這是一個看上去簡單,但是又非常不簡單的問題。我見過很多人,學(xué)習(xí)模式理論已經(jīng)很長時間了,但是并不真正理解這一點。
模式理論的基本思想其實起源于中國,是中國文化的固有思想。你,我,我們中每一個自幼受到中國思想熏陶的人,都自然具有這一基本思想。模式的思想存在于中國文化的各個角落,包括哲學(xué)、法律,醫(yī)學(xué),兵法,體育,文學(xué),直到我們行為處事的方式。
模式的思想,長期以來不存在于西方思考方式中,至今也不是西方文化的主流思想。因此學(xué)習(xí)模式,切忌以西方式的思路學(xué)習(xí)。不然的話,緣木求魚,事倍功半。
簡單地講,所謂模式,就是得到很好研究的范例。設(shè)計模式,就是設(shè)計范例。在孫子兵法中,充斥著各種模式。孫子說,“至于死地而后生”,就是戰(zhàn)爭模式。三十六計,條條都是模式,比如“走為上”,“空城計”也都是戰(zhàn)爭模式。
這些模式中的每一個都具有典型意義,具有學(xué)習(xí)價值。通過研究這些模式,學(xué)習(xí)者可以相互交流,可以在自己的實踐中舉一反三,推陳出新,加以應(yīng)用。
在我們參加高考的時候,老師給我們很多的典型題目,作為練習(xí)使用。這些題目一般來說不會在高考中原封不動地出現(xiàn),但是這些題目會有一些內(nèi)容啟發(fā)我們的思考,可以讓我們舉一反三,從而為考試做好準(zhǔn)備。
模式不是框架(Framework),也不是過程。模式也不是簡單的“問題的解決方案”,因為模式必須是典型問題的解決方案,是可以讓學(xué)習(xí)者舉一反三的,有研究價值、有交流價值,有自己的名字的例子。
模式不能套用。不要以為在任何一個系統(tǒng)中都要使用某些設(shè)計模式。系統(tǒng)的設(shè)計也不是含有設(shè)計模式就好,更不是含有越多的設(shè)計模式就越好。
在《三國演義》中,馬恕就套用了“至于死地而后生”的戰(zhàn)爭模式,最后倒了大霉。在高考中,你如果把老師交給你的典型題目答案倒背如流,在一個個放到考試卷子上去,放得越多,恐怕你就離考上大學(xué)越遠。
比如你喜歡三十六計,如果你在執(zhí)行某項軍事任務(wù)的時候,千方百計地將盡可能多的三十六計用到里面,每次都來一個“走為上”,那么你的朋友和敵人都會覺得某名奇妙。如果你非三十六計中的計謀不用,或者認(rèn)為非三十六計中的策略不算好策略,那么別人只能認(rèn)為你不懂三十六計的精髓。
中國傳統(tǒng)醫(yī)學(xué)也是一樣,有時看上去癥狀相似的病,卻要使用不同的處方,即所謂辨證用藥。如果每次給病人看病,都要捧出某本醫(yī)案,將盡可能多的著名醫(yī)案用到你的病人身上,恐怕過不了多久就麻煩大了。
中國古代的法律,就是案例法;也就是需要法官在研習(xí)案例的基礎(chǔ)之上,舉一反三,適當(dāng)發(fā)揮。開個玩笑,如果你喜歡上“軋美案”,逢美必軋,恐怕需要及早做好該行的準(zhǔn)備。
關(guān)于模式的理論的起源、歷史,以及模式理論與中國文化的淵源、哲學(xué)思想,設(shè)計模式背后的OO設(shè)計原則,二十幾個設(shè)計模式的詳細(xì)講解,他們在Java語言中如何實現(xiàn),如何在自己的系統(tǒng)設(shè)計中舉一反三、推陳出新,以及Java語言本身使用了什么設(shè)計模式,可以看一看我的新書《Java與模式》(電子工業(yè)出版社出版)。
簡單工廠(Simple Factory)模式
本文是作者的新書《Java與模式》的節(jié)選,主要內(nèi)容如下:
第12章? 簡單工廠(Simple Factory)模式
12.1? 工廠模式的幾種形態(tài)
12.2? 簡單工廠模式的引進
12.3? 簡單工廠模式的結(jié)構(gòu)
12.4? 簡單工廠模式的實現(xiàn)
12.5? 簡單工廠模式與其他模式的關(guān)系
12.6? 模式的優(yōu)點和缺點
12.7? 簡單工廠模式在Java中的應(yīng)用
12.8? 女媧摶土造人
請在下面打開pdf文件閱讀本文
簡單工廠(Simple Factory)模式
工廠方法(Factory Method)模式
本文是作者的新書《Java與模式》的節(jié)選,主要內(nèi)容如下:
第13章? 工廠方法(Factory Method)模式
13.1? 引言
13.2? 工廠方法模式的結(jié)構(gòu)
13.3? 工廠方法模式在農(nóng)場系統(tǒng)中的實現(xiàn)
13.4? 關(guān)于工廠方法模式的實現(xiàn)
13.5? Java語言中工廠方法模式的例子
13.6? 工廠方法模式與其他模式的關(guān)系
13.7? 女媧舉繩造人
13.8? 其他的例子
請在下面打開pdf文件閱讀本文
工廠方法(Factory Method)模式抽象工廠(Abstract Factory)模式
本文是作者的新書《Java與模式》的節(jié)選,主要內(nèi)容如下:
第14章? 抽象工廠(Abstract Factory)模式
14.1? 引言
14.2? 問題
14.3? 抽象工廠模式的結(jié)構(gòu)
14.4? 在什么情形下應(yīng)當(dāng)使用抽象工廠模式
14.5? 抽象工廠模式在農(nóng)場系統(tǒng)中的實現(xiàn)
14.6? 抽象工廠模式的另一個例子
14.7? “開-閉”原則
14.8? 關(guān)于模式的實現(xiàn)
14.9? 女媧造萬物的故事
請在下面打開pdf文件閱讀本文
抽象工廠(Abstract Factory)模式
單例(Singleton)模式
本文是作者的新書《Java與模式》的節(jié)選,主要內(nèi)容如下:
第15章? 單例(Singleton)模式
15.1? 引言
15.2? 單例模式的結(jié)構(gòu)
15.3? 在什么情況下使用單例模式
15.4? 單例類的狀態(tài)
15.5? 一個實用的例子:屬性管理器
15.6? Java語言中的單例模式
15.7? 專題:不完全的單例類
15.8? 相關(guān)模式
15.9? 附錄:雙重檢查成例的研究
15.10? 給讀者的一點建議
請在下面打開pdf文件閱讀本文
單例(Singleton)模式
單例模式與MX記錄
本文是作者的新書《Java與模式》的節(jié)選,講解如何將單例模式應(yīng)用到實際系統(tǒng)設(shè)計中去,主要內(nèi)容如下:
第16章? 專題:單例模式與MX記錄
16.1? 問題與解決方案
16.2? 目錄服務(wù)與MX記錄
16.3? JNDI架構(gòu)介紹
16.4? 如何使用JNDI編程
16.5? 系統(tǒng)設(shè)計
16.6? 討論
請在下面打開pdf文件閱讀本文
單例模式與MX記錄
多例(Multiton)模式與多語言支持
本文是作者的新書《Java與模式》的節(jié)選,講解多例(Multiton)模式以及如何將多例模式應(yīng)用到實際系統(tǒng)設(shè)計中去,主要內(nèi)容如下:
第17章? 專題:多例(Multiton)模式與多語言支持
17.1? 引言
17.2? 多例模式
17.3? 多語言項目的設(shè)計
請在下面打開pdf文件閱讀本文
多例(Multiton)模式與多語言支持序列鍵生成器與單例及多例模式本文是作者的新書《Java與模式》的節(jié)選,講解單例(Singleton)及多例(Multiton)模式以及如何將它們應(yīng)用到實際系統(tǒng)設(shè)計中去,主要內(nèi)容如下:
第18章? 專題:序列鍵生成器與單例及多例模式
18.1? 問題
18.2? 將單例模式應(yīng)用到系統(tǒng)設(shè)計中
18.3? 將多例模式應(yīng)用到系統(tǒng)設(shè)計中
18.4? 討論
請在下面打開pdf文件閱讀本文
序列鍵生成器與單例及多例模式
《Java與模式》的目錄
閻宏博士
《Java與模式》作者
www.WebEndsHere.com(或者http://218.6.168.109/jeffyan77)
JavaPatterns@yahoo.com