熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

Java開發中的23種設計模式

2013-11-23 19:45:01  來源: Java高級技術 
    學習設計模式有兩個意義
   
    一學習設計模式最重要的是了解模式的手機應用場景編程遇到特定場景的話要有意識聯想到設計模式哪怕細節忘了也沒關系翻翻書就找到了
   
    二提高手機APP設計的思想學習設計模式的時候要體會模式精妙之處當想明白大師思想和自己的差距的時候差距就縮短了一點兒
   
    有的模式平淡無奇應用卻廣泛有的模式設計精巧應用場景卻不易遇到無論如何要麼掌握工具要麼學到思想都是收獲
   
    最適合簡單概括設計模式的是UML圖收集了一個非常好的資源分享在我的sky drive網絡硬盤上包含種設計模式的UML圖
   
    ciddbfbff/selfaspx/Public/books/designpatternscardpdf
   
    設計模式可以分為三類behavioural structural creational
   
    behavioural
   
    Memento(備忘錄)
   
    精巧程度
   
    應用廣泛
   
    在不破壞封裝性的前提下捕獲一個對象的內部狀態並在該對象之外保存這個狀態這樣以後就可將該對象恢復到保存的狀態
   
    Chain of Responsibility(責任鏈)
   
    精巧程度
   
    應用廣泛
   
    為解除請求的發送者和接收者之間耦合而使多個對象都有機會處理這個請求將這些對象連成一條鏈並沿著這條鏈傳遞該請求直到有一個對象處理它
   
    適合用在一系列handler的場景下分為純和不純兩種好像女孩兒也可以這麼分?
   
    Observer(觀察者)
   
    定義對象間的一種一對多的依賴關系以便當一個對象的狀態發生改變時所有依賴於它的對象都得到通知並自動刷新
   
    因為java裡有Obserable和Observer 所以通常在java裡不會自己設計觀察者模式
   
    Command(命令模式)
   
    精巧程度
   
    應用廣泛
   
    將一個請求封裝為一個對象從而可用不同的請求對客戶進行參數化對請求排隊或記錄請求日志以及支持可取消的操作
   
    command模式用來解耦invoker和receiver
   
    State(狀態模式)
   
    精巧程度
   
    應用廣泛
   
    允許一個對象在其內部狀態改變時改變它的行為對象看起來似乎修改了它所屬的類
   
    OO編程如果出現多個相同的if…else條件應該考慮用state模式重構work flow的狀態器也是基於State模式的
   
    Interpreter(解釋器)
   
    精巧程度 N/A
   
    應用廣泛
   
    給定一個語言定義它的語法的一種表示並定義一個解釋器該解釋器使用該表示解釋語言中的句子
   
    Strategy(策略模式)
   
    精巧程度
   
    應用廣泛
   
    定義一系列的算法把它們一個個封裝起來並且使它們可相互替換本模式使得算法的變化可獨立於使用它的客戶
   
    Iterator(迭代子)
   
    Java Collection都可以迭代在java上不需要格外設計iterator
   
    Template Method(模板方法)
   
    精巧程度
   
    應用廣泛
   
    見名知義太簡單了學過一遍就不會忘但是這個應用非常廣泛!
   
    Mediator(仲裁者)
   
    精巧程度
   
    應用廣泛
   
    用來解耦多個peer個人覺得這個模式多半會讓mediator十分臃腫mediator本身需要有很清晰的設計才能使用應用場景恐怕也少
   
    Visitor(訪問者)
   
    精巧程度
   
    應用廣泛
   
    collection裡存一個類系的entry時使用visitor模式可以避免instance of的使用更重要的是方便擴展類系
   
    Structure
   
    adapter(適配器)
   
    精巧程度
   
    應用廣泛
   
    將一個類的接口轉換成客戶希望的另外一個接口適配器模式使得原本由於接口不兼容而不能一起工作的類可以一起工作
   
    Proxy(代理)
   
    精巧程度
   
    應用廣泛
   
    aop是代理模式的一種發揮Spring和Hibernate都大量使用proxy可以引申學學JDK的dynamic proxy模式簡單
   
    Bridge(橋梁)
   
    精巧程度
   
    應用廣泛
   
    Bridge在技術上是strategy的進一步發揮但側重在實現與抽象的解耦
   
    將抽象部分與它的實現部分分離使它們都可以獨立地變化
   
    Composite
   
    精巧程度
   
    應用廣泛
   
    適用於樹狀結構
   
    Decorator(裝飾)
   
    精巧程度
   
    應用廣泛
   
    在java I/O中廣泛使用為了解決類爆炸的問題
   
    Facade(門面)
   
    連個UML圖都沒有算神馬模式?
   
    Flyweight
   
    精巧程度
   
    應用廣泛
   
    分單純復合兩種本身包含了工廠方法模式一系列對象如果他們都有某部分屬於特定集合就讓他們共享這個特定集合以節省資源
   
    Creational
   
    Factory Method(工廠方法)
   
    精巧程度
   
    應用廣泛
   
    兩個變種一個是根據參數創建對象一個是factory類系對應產品類系面向接口編程在創建模式的體現
   
    Abstract Factory(抽象工廠)
   
    精巧程度
   
    應用廣泛
   
    只有產品有兩個類系的時候才用得上
   
    Builder
   
    精巧程度
   
    應用廣泛
   
    產品分部分並且build的過程不定的時候考慮用這種模式是模板模式的一種發揮
   
    Prototype(原型)
   
    java有cloneable的支持所以通常不需要自己設計prototype java用prototype的時候注意深復制淺復制的問題prototype之外的一個選擇是提供一個constructor接受本類型對象作為參數這個方式更加實用!
   
    singleton(單例)
   
    保證一個類僅有一個實例並提供一個訪問它的全局訪問點
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27396.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.