J2EE設計模式分析與實踐 引言

2021-03-31 19:06:34 字數 2795 閱讀 4125

「簡單地說,模式是乙個出現在世界上的實物,同時也是一條規則,告訴你應該如何建立乙個實物、應該在何時建立。它既是過程,也是實物;既是對當前實物的描述,也是對建立實物的過程的描述。」

——《建築的永恆之道》

在軟體科學中,隨著理論的發展,模式被細分為好多種,有軟體的管理模式,實踐證明與傳統管理是有區別的,從而是一種新的模式。有軟體分析模式,有軟體設計模式,過程模式,有軟體重構模式等等。其中設計模式是最核心、最重要的模式。在通常的理論書籍中,一般把設計模式就簡稱為模式了。下文中可以通過上下文環境知道模式做設計模式解或是通用的模式。

那麼,在軟體科學中,模式到底是什麼呢,能完全借用c.alexander定義的模式嗎?有人說軟體跟建築天生相像,你瞧 architecture,身兼數重意思。其實gof書中已經有說明:本質上一樣。但是具體到軟體領域又有所不同。可惜的是由於軟體模式理論一直在發展中,公認的定義到目前為止還沒有。但是確有幾種經典的說法。有說,模式就是情境中乙個問題經過證實地乙個方案.這種定義比較簡單,簡潔明瞭。在gof(gang of four)的書中模式被定義成三段值:表示特定情境、問題、與方案之間的關係。並按照這樣的方式描述介紹了著名的23種模式(c++語言描述)。在《j2ee core patterns》一書種作者也作了類似的定義:模式是用來描述所交流的問題及其解決方案。並用類似於gof書中的介紹步驟解析了15個j2ee模式。其他介紹模式的書籍、**與**也有自己的模式定義。但都推崇gof書中的定義,並一般以其為藍本對比介紹。

軟體中的模式起源於建築,但是正如gang of four在《設計模式》中所說:儘管alexander所指的是城市和建築模式,但他的思想也同樣適用於物件導向設計模式。只是在物件導向的解決方案裡,我們用物件和介面代替了牆壁和門窗。兩者的核心都在於提供了相關問題的解決方案。

實際上我們生活在乙個充滿模式的世界裡——當然,簡單的而肯定的前提是我們的世界是有秩序的。現代的人除了瘋子和**,幾乎都穿有衣服;大部分人都是一天吃三頓飯,當然也有一天吃兩頓的;社會中,我們屬於某個社群或團體,參與政治、經濟活動;在我們參與的所有活動中,我們都按照一定的規則行事;在規則邊緣的人們又總是希望加入規則使用者的行列,就像我們中國先前和俄羅斯現在一直堅持要求加入世界**組織一樣。吃飯、穿衣、睡覺是我們人類基本的生活要求;我們每乙個人都必須遵守,乙個人如果不穿衣、不吃飯,那沒有其他結論,他根本就不屬於人類。參與社群,在一定的框架下進行社會經濟活動則是人類得以日益發展的內在要求。

其實在中國傳統裡頭更是講究模式,比如京劇,一招一式都有套路;再如中國國畫格式講究套路,樹該怎麼畫,有幾種畫法;又如《孫子兵法》——它可以說已經成為用在各方面「戰爭」的通用模式了,他告訴你在什麼軍事環境中採取什麼陣法,然而怎麼去拼打就靠自己的理解和靈活應用了。因而,建立模式的是大師級別的人物,拘泥於這些模式的人卻只能叫做工匠。當然對於無所謂模式者,要麼已經融會貫通,要麼就是無知,他們應該首先成為的是工匠。就像我們中國,現階段,就是在積極參與國際社會與經濟活動規則的制定,用中華民族的傳統美德和智慧型重塑具有中華民族特色的國際、國內社會經濟交往方式,再造有利於全體人類可持續發展的社會經濟活動規則。

可見模式是無所不在的,生活中模式是習慣的養成。文化中模式是歷史的積澱。學習中模式是經驗的昇華。軟體科學中模式就是人們對實踐的提煉、是實用性與理論性的統一。

1、為什麼學習和研究設計模式

那麼我們在軟體中為什麼要學習模式?模式到底給我們帶來了什麼好處而使得如此多人對它熱衷?其實道理是一樣的——我們都需要借鑑大師的經驗,站在巨人的肩膀上才能夠更好的前行。尤其在工科領域,這點顯的更是重要。其次,學習模式能讓我們學習和開發軟體時少走彎路,使得我們的學習從一開始就是嚴密的。開發出來的軟體也能更加scalable和reusable,從而可以提供更強的可維護性、更短的開發生命週期。知道模式,研究模式還可以讓我們開發軟體更流暢、更模組化,減少耦合。用乙個術語說就是減少內應力,合理疏解軟體的內應力可以使得軟體系統長存。如建築結構中分解壓力一般,如果結構不合理,壓力分解不均,建築很可能很快就或漏或塌。要使得新建築、新軟體在一定時期內不漏不塌是我們要學習模式的基本原因;能夠使得我們的建築、軟體長久甚至永存,正是模式如此吸引我們的魅力所在。

2、如何學習和研究設計模式

同樣有必要從建築中模式發展歷程講起,我們來看看christopher alexander教授「三步曲」 :

•研究模式的理論——《建築的永恆之道》

•第乙個完整的模式語言——《建築模式語言》

•理性地用模式來指導建築過程——《奧勒岡實驗》

本文是有關設計模式的研究。設計模式第一次是由架構設計師christopher alexander 在他所著的 a pattern language: towns, buildings, construction(oxford university press,1977)一書中提到的。他引入了這一概念,並稱為模式 — 對於反覆出現設計問題的抽象解決方案―― 這一概念吸引了其它領域中一些研究人員的注意,特別是二十世紀八十年代中後期,那些開發物件導向的軟體人員。值得注意的是對軟體設計模式的研究造就了一本據信是物件導向設計方面最有影響的書籍:design patterns: elements of reusable object-oriented software(即後述《設計模式》一書),由 erich gamma、richard helm、ralph johnson 和 john vlissides 合著。這幾位作者常被稱為「四人組(gang of four)」,很多人也戲稱是「四人幫」,而這本書也就被稱為「四人組/幫(或 gof)」書。

在此經典模式理論指導下,就可以管窺設計模式的精要了。通常的步驟應該是:首先要了解設計模式,大凡接近她的人都會被她的魅力感召。這樣就過渡到再次:系統學習設計模式,在學習的同時和學習以後我們要作的就是在專案中去實踐設計模式了。必須指出的是最終實踐設計模式時候要落實到具體的環境中,使用某種語言,受限於特定環境的應用需要勇氣和變通,紙上談兵是無助於實際的。本文是在j2ee環境中模式的分析與實踐。

J2EE常用設計模式 工廠模式

軟體設計的一般原則 1.開閉原則 對擴充套件開放,對修改關閉 2.黎克特制代換原則 在任何基類出現的地方,子類一定可以出現 3.依賴倒轉原則 依賴於抽象,不依賴於實現 4.介面隔離原則 應當為客戶提供盡可能小的單獨的介面而不是大的總介面 5.組合,聚合復用原則 盡量使用組合聚合而不是使用繼承達到 復...

j2ee常用設計模式之工廠模式

今天花了很多時間把工廠模式又整理了一下,發現以前都沒怎麼弄懂。工廠模式分為3種 簡單工廠模式,工廠方法模式和抽象工廠模式。1.簡單工廠模式 其實這個概念我還真沒怎麼看懂,難道是我的智商有問題?既然概念沒看懂就不說了,說說我知道的吧。簡單工廠模式由三部分組成 工廠,抽象產品,具體產品。剛才看見別人寫的...

J2EE專案架構最佳實踐

基於專案的最差實踐,可以總結出一套專案架構的最佳實踐原則以便今後的復用和改進。原則1.時間總是非常緊,需求總是在變化,技術問題總是層出不窮,千萬不要認為軟體工程的問題不會發生在規範的公司和專案。每次一定要根據自己所處的位置作出正確的評估,比如專案經理做評估要留出足夠的時間buffer,開發人員應當正...