爪哇島

          關注java
          posts - 6, comments - 0, trackbacks - 0, articles - 1

          需要掌握的JAVA設計模式

          Posted on 2011-02-22 10:19 edsion 閱讀(324) 評論(0)  編輯  收藏 所屬分類: 設計模式
          引言

              設計模式是面向對象思想的集大成,GOF在其經典著作中總結了23種設計模式,又可分為:創建型、結構型和行為型3個大類。對于軟件設計者來說,一般的過程就是在熟練掌握語言背景的基礎上,了解類庫的大致框架和常用的函數和接口等,然后多再在百般錘煉中,提高對軟件設計思想的認識。

              軟件設計者要清楚自己的定位和方向,一味的沉溺于技術細節的思路是制約個人技術走向成熟的毒藥。因此,學習軟件設計,了解軟件工程,是每個開發人員必備的一課。筆者在此不想詳細的描述各個設計模式的細節,我想google和baidu上的資料已經多如牛毛了。而且,爭取的學習方法也不是了解所有的設計模式就可以無敵于天下。我所強調的學習方法就是在熟練掌握基本要素的基礎上,了解大致的框架。這一條不僅是學習類庫的方法,對設計模式來說是可行的。同時,切記的是在平時的積累中,不斷的體會和實踐。因此,本文的目的就是將23種模式中,必須掌握的幾個最關鍵、最常用的設計模式,做以總結和簡述。 

              1 Factory Pattern 

              上榜理由:將程序中創建對象的操作,單獨出來處理,大大提高了系統擴展的柔性,接口的抽象化處理給相互依賴的對象創建提供了最好的抽象模式。 

              2 Facade Pattern 

              上榜理由:將表現層和邏輯層隔離,封裝底層的復雜處理,為用戶提供簡單的接口,這樣的例子隨處可見。門面模式很多時候更是一種系統架構的設計,在我所做的項目中,就實現了門面模式的接口,為復雜系統的解耦提供了最好的解決方案。 

              3 Command Pattern 

              上榜理由:將請求封裝為對象,從而將命令的執行和責任分開。通常在隊列中等待命令,這和現實多么的相似呀。如果你喜歡發號施令,請考慮你的ICommond吧。

              4 Strategy Pattern 

              上榜理由:策略模式,將易于變化的部分封裝為接口,通常Strategy 封裝一些運算法則,使之能互換。Bruce Zhang在他的博客中提到策略模式其實是一種“面向接口”的編程方法,真是恰如其分。 

              5 Iterator Pattern 

              上榜理由:相信任何的系統中,都會用到數組、集合、鏈表、隊列這樣的類型吧,那么你就不得不關心迭代模式的來龍去脈。在遍歷算法中,迭代模式提供了遍歷的順序訪問容器,GOF給出的定義為:提供一種方法訪問一個容器(container)對象中各個元素,而又不需暴露該對象的內部細節。.NET中就是使用了迭代器來創建用于foreach的集合。 

              6 Adapter Pattern 

              上榜理由:在原類型不做任何改變的情況下,擴展了新的接口,靈活且多樣的適配一切舊俗。這種打破舊框框,適配新格局的思想,是面向對象的精髓。以繼承方式實現的類的Adapter模式和以聚合方式實現的對象的Adapter模式,各有千秋,各取所長。看來,把它叫做包裝器一點也不為過,

           7 Observer Pattern

           上榜理由:定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時, 所有依賴于它的對象都得到通知并被自動更新。觀察者和被觀察者的分開,為模塊劃分提供了清晰的界限。在.NET中使用委托和事件可以更好的實現觀察者模式,事件的注冊和撤銷不就對應著觀察者對其對象的觀察嗎? 

              8 Bridge Pattern 

              上榜理由:把實現和邏輯分開,對于我們深刻理解面向對象的聚合復用的思想甚有助益。
            
              9 Singleton Pattern 

              上榜理由:改善全局變量和命名空間的沖突,可以說是一種改良了的全局變量。這種一個類只有一個實例,且提供一個訪問全局點的方式,更加靈活的保證了實例的創建和訪問約束。.NET Frameeork已經封裝了Singleton類,我們拿來即可。

              總結

              仁者見仁。以上只是筆者一家之言,更重要的真知灼見皆來源于實踐,設計思想和模式的應用也來源于不斷的學習和反復,我也將一如既往。此文只是開端,未來才是不斷的探索。


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 九江县| 平凉市| 凤凰县| 微博| 石渠县| 海原县| 忻城县| 信宜市| 同江市| 西畴县| 淮北市| 扎囊县| 广丰县| 通海县| 伊通| 房山区| 密山市| 绥芬河市| 娄底市| 高阳县| 五家渠市| 炉霍县| 巫山县| 宜州市| 冷水江市| 庆元县| 高州市| 义乌市| 哈尔滨市| 策勒县| 卓尼县| 夏津县| 朝阳县| 嘉峪关市| 德庆县| 酉阳| 济南市| 贵州省| 离岛区| 达拉特旗| 宜阳县|