程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 什麼是設計模式

什麼是設計模式

編輯:JAVA編程入門知識
什麼是模式,這是一個看上去簡單,但是又非常不簡單的問題。我見過很多人,學習模式理論已經很長時間了,但是並不真正理解這一點。

   <!-- frame contents --> <!-- /frame contents -->   模式理論的基本思想其實起源於中國,是中國文化的固有思想。你,我,我們中每一個自幼受到中國思想熏陶的人,都自然具有這一基本思想。模式的思想存在於中國文化的各個角落,包括哲學、法律,醫學,兵法,體育,文學,直到我們行為處事的方式。

  模式的思想,長期以來不存在於西方思考方式中,至今也不是西方文化的主流思想。因此學習模式,切忌以西方式的思路學習。不然的話,緣木求魚,事倍功半。

  簡單地講,所謂模式,就是得到很好研究的范例。設計模式,就是設計范例。在孫子兵法中,充斥著各種模式。孫子說,“至於死地而後生”,就是戰爭模式。三十六計,條條都是模式,比如“走為上”,“空城計”也都是戰爭模式。

  這些模式中的每一個都具有典型意義,具有學習價值。通過研究這些模式,學習者可以相互交流,可以在自己的實踐中舉一反三,推陳出新,加以應用。

  在我們參加高考的時候,老師給我們很多的典型題目,作為練習使用。這些題目一般來說不會在高考中原封不動地出現,但是這些題目會有一些內容啟發我們的思考,可以讓我們舉一反三,從而為考試做好預備。

  模式不是框架(Framework),也不是過程。模式也不是簡單的“問題的解決方案”,因為模式必須是典型問題的解決方案,是可以讓學習者舉一反三的,有研究價值、有交流價值,有自己的名字的例子。

  模式不能套用。不要以為在任何一個系統中都要使用某些設計模式。系統的設計也不是含有設計模式就好,更不是含有越多的設計模式就越好。

  在《三國演義》中,馬恕就套用了“至於死地而後生”的戰爭模式,最後倒了大霉。在高考中,你假如把老師交給你的典型題目答案倒背如流,在一個個放到考試卷子上去,放得越多,恐怕你就離考上大學越遠。

  比如你喜歡三十六計,假如你在執行某項軍事任務的時候,千方百計地將盡可能多的三十六計用到裡面,每次都來一個“走為上”,那麼你的朋友和敵人都會覺得某名奇妙。假如你非三十六計中的計謀不用,或者認為非三十六計中的策略不算好策略,那麼別人只能認為你不懂三十六計的精髓。

  中國傳統醫學也是一樣,有時看上去症狀相似的病,卻要使用不同的處方,即所謂辨證用藥。假如每次給病人看病,都要捧出某本醫案,將盡可能多的聞名醫案用到你的病人身上,恐怕過不了多久就麻煩大了。

  中國古代的法律,就是案例法;也就是需要法官在研習案例的基礎之上,舉一反三,適當發揮。開個玩笑,假如你喜歡上“軋美案”,逢美必軋,恐怕需要及早做好該行的預備。

  關於模式的理論的起源、歷史,以及模式理論與中國文化的淵源、哲學思想,設計模式背後的OO設計原則,二十幾個設計模式的具體講解,他們在Java語言中如何實現,如何在自己的系統設計中舉一反三、推陳出新,以及Java語言本身使用了什麼設計模式,可以看一看我的新書《Java與模式》(電子工業出版社出版)。

進入討論組討論。
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved