http://35java.com/zhibo/forum.php?mod=viewthread&tid=255&extra=page%3D3 最近一直在看《Design Patterns: Elements of Reusable Object-Oriented Software》這本書,不知道看過這本書的人是不是有摸不到頭緒,無處下手的感覺, OK,和我一樣/hand. 書裡面講述的23種模式經常把我弄的一蹋糊塗,這本書不看個三、四遍以上是很難理解的, 而且即便看了幾遍, 也是很難把握住精髓。 裡面講解的例子是用C++和SMALLTALK這兩種OO語言。對於我這種對C++半生不熟的笨鳥來說, 難度是不是太高了些.而且例子的講解並不能使讀者融會貫通。 呵呵, 我看書的原則就是看不懂的話就過段時間再看,沒聽說過“大俠請重新來過”麼。(而且我看書, 從來不對一本書感冒, 經常是講同一類知識的書穿插著看。對於設計模式---中文版的好象只有這麼一本,E文的倒有一些。)由於已經看了幾遍, 對Design Pattern 結構,內容整體上都有了一定的瞭解,所以剩下的就該用實際的例子來幫我理解掌握Design Patterns。如果這時再返回頭重新看書, 會有種山重水複疑無路, 柳岸花明又一村的感覺。(連點掌聲都沒有) 其實在JAVA中,到處可見Design Patterns,JDK是設計模式的典型應用。常用的AWT, 裡麵包含了AbstractFactory,Composite,Bridge, Strategy,Command,SINGLETON等等模式 我就不細說的啦, 有興趣的朋友可以自己研究, 希望能把心得發給我一份, false@263.net, 我會感激的哭的…… ^_- , 迷時師度, 悟時自度。 共同學習進步麼。 這裡介紹幾本關於設計模式的JAVA書先。《THE DESIGN PATTERNS JAVA COMPANION》《Thinking in Patterns with Java》 有興趣的可以去找來看看。E文的. ( FALSE:不要急, 沒看見我在醞釀情緒麼, 君不見黃河之水天上來,奔流到海不 複回麼,菩提本無樹, 鏡台亦非明) 執行個體剖析 JAVA是個龐大的體系,APPLET,APPLICATION ,JSP/SERVET,EJB,RMI,CORBA,嵌入式JAVA.......應用的範圍很廣。現在學習JAVA的,很多人都是從JSP入手的。不象97,98年那時是從applet,application開始。目前相當多的人單純的為了學JSP而學JSP,java的基礎很薄, 可惜可歎。為了使大家對設計模式有所瞭解,體會DESIGN PATTERNS 在jsp/servlet的應用,進而擴充到java。這裡採用JIVE做為例子。JIVE是基於JSP/SERVLET技術的FORUM,是個open source的software 產品。 到這裡可以下載http://www.coolservlets.com/jive。 它的優秀性就不用我多說了。使用JSP/SERVLET做開發的人都知道。很多人都是靠研究它入門的。 NOTE: 本文不是講解JSP/SERVLET文法、具體實現和編程技巧。如果你需要這些,恐怕我會讓你失望的, 還是請到google去search吧。這裡主要是通過JIVE來解析THINKING IN DESIGN PATTERNS FOR JAVA . 包括對象的建立,對象和對象間的結構組合以及對象行為等。由於涉及很多OOP的概念,例如類,對象,繼承,介面,抽象,封裝等等這些亂七八糟的東東。如果對OOP和JAVA不太瞭解,建議請看《THINKING IN JAVA》這本書。 也有可能我寫的內容裡面會涉及到UML的內容, 這下各位可有福了,由於本人的水平實在不怎麼樣,這些模式我能說多少就是多少了, 現在整個社會都在編故事,講故事。。。。。。如果看我的寫的實在不像話, 那你就當看個故事了:)也有可能說說就跑題了。 分類 根據模式的目的將23種模式分為三類:建立型(Creational),結構型(Structural)和行為型(Behavioral)模式。 建立型(Creational):建立型模式是用來建立對象的。我們在coding時經常要對類進行執行個體化, 建立型模式就是提供提供各種不同的solution,從執行個體化的代碼中去除寫入程式碼(hard-coding), 從而使編碼更加靈活和general, 適用於更複雜的行為。 ·Factory Method ·Abstract Factory Method ·Builder Pattern ·Prototype Pattern ·Singleton Pattern 結構型(Structural) 結構型模式處理類或對象的組合來獲得更大的結構。 · Adapter pattern · Composite pattern, · Proxy pattern, · Flyweight pattern, · Façade pattern, · Bridge pattern, · Decorator pattern, 行為型(Behavioral) 行為型模式處理類或對象如何互動 · Observer pattern · Mediator · Memento · Chain of Responsibility · Template pattern · Interpreter in a program. · Strategy pattern · Visitor pattern · State pattern · Command pattern · Iterator pattern 下面將對JIVE的核心來說說DESIGN PATTERNS 分析JIVE不是件容易的事情, 裡面涉及OOP的東東很多,所以最好能使用工具。 欲善其事, 必先利其器。呵呵, 我用RATIONAL ROSE, 因為rose實現了UML,能很好 的把設計思路和各種類,介面,對象及之間的關係體現出來。我想通過類圖和code結合來 看,這樣會比只看code效果來的好。 (你也可以使用JBUILDER或j++, 不在於使用什麼, 關鍵看哪個的專案管理方便。我用建模工具rose) 這裡使用RATIONAL ROSE的一個功能----JAVA逆向轉出工程 (我覺的通過這個功能和產生JAVA代碼這個功能對我提高很大, 不管是掌握JAVA還是掌握UML&ROSE) FIRST,需要將JDK匯入到rose裡. 然後選擇菜單TOOLS=>JAVA=>REVERSE ENGINEER JAVA 開啟REVERSE ENGINEER JAVA視窗,選擇JIVE裡我們需要的servlet源碼 逆向產生模型。當然你需要把classpath設定正確。 Jive裡使用了很多的interface和abstract class, 這是物件導向裡通常使用的。 為了code的複用和靈活性, DESIGN PATTERNS 的一個非常重要的原則:針對介面編程,而不是針對實現編程。第二個原則就是: 優先使用對象組合,而不是類繼承。 2.2.1 com.coolservlets.forum package 這個package裡包括很多class和interface。主要封裝forum的基本操作。 (什麼是class和interface? 呼呼。。。。。。趁我沒還吐血你趕緊去查資料吧。) 不管是使用CGI、ASP還是PHP甚至JSP/SERVLET,我相信很多人或大或小,或簡單或複雜, 都做過BBS。 那麼建議同志們看看JIVE是如何設計和實現的。每個人看問題的角度是不一樣 的,不管您從哪個角度來看, 我相信你都會從中獲得營養。 |