Java常用设计模式的实例学习系列-绪论
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Java常用设计模式的实例学习系列-绪论
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                前言
雖然拜讀了《HeadFirst設計模式》一書,對設計模式進行了學習,但是一直沒有真正的進行編碼。
 近期打算抽空對常用的設計模式進行實例編碼,并形成博文,以備日后參考。
關于設計模式
- 設計模式(Design Pattern)是一套被反復使用、多數(shù)人知曉的、經過分類的、代碼設計經驗的總結。
 - 用設計模式的目的:為了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。
 
輔助工具
- UML類圖的依賴、關聯(lián)、聚合、組合、泛化、繼承
 
設計原則(待更新…)
- 面向對象的六個設計原則-以購物車支付為例
 
源碼GitHub
- https://github.com/hanchao5272/design-pattern
 
設計模式分類
設計模式分為三種類型,共計23種:
- 創(chuàng)建型模式:單例模式、抽象工廠模式、工廠模式、建造者模式、原型模式。
 - 結構型模式:適配器模式、裝飾模式、外觀模式、代理模式、橋接模式、組合模式、享元模式。
 - 行為型模式:策略模式、觀察者模式、責任鏈模式、狀態(tài)模式、命令模式、模版方法模式、迭代器模式、中介者模式、備忘錄模式、解釋器模式、訪問者模式。
 
設計模式實例學習列表
創(chuàng)建型模式:對象實例化的模式,創(chuàng)建型模式用于解耦對象的實例化過程。
- 單例模式(singleton)-8種-以打印機為例: 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
 - 工廠模式(factory)-3種-以手機制造工廠為例: 提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。
 
結構型模式:把類或對象結合在一起形成一個更大的結構。
- 適配器模式(adapter)-以電壓適配器為例: 將一個類的接口轉換成另外一個客戶希望的接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
 - 裝飾者模式(decorator)-以生日蛋糕裝飾為例: 動態(tài)地給一個對象添加一些額外的職責。就擴展功能而言, 它比生成子類方式更為靈活。
 - 外觀模式(facade)-以瀑布模型軟件開發(fā)為例: 為子系統(tǒng)中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。
 - 代理模式(proxy)-以購房中介為例: 為其他對象提供一個代理以控制對這個對象的訪問。
 
行為型模式:類和對象如何交互,及劃分責任和算法。
- 策略模式(strategy)-以購物車的支付策略為例: 定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶而變化。
 - 觀察者模式(observer)-以報紙訂閱為例: 定義對象間的一種一對多的依賴關系,以便當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并自動刷新。
 - 設計模式(chain of responsibility)-責任鏈模式-以多輪面試為例: 使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它為止。
 - 狀態(tài)模式(state)-以射擊游戲的武器狀態(tài)為例: 允許一個對象在其內部狀態(tài)改變時改變它的行為,對象看起來似乎修改了它的類。
 - 命令模式(command)-以游戲快捷鍵為例: 將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可取消的操作。
 - 模板方法模式-以簡歷模板為例: 定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
 
參考
- https://baike.baidu.com/item/設計模式/1212549?fr=aladdin
 - 《HeadFirst設計模式》
 - https://me.csdn.net/lmj623565791
 
總結
以上是生活随笔為你收集整理的Java常用设计模式的实例学习系列-绪论的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 【C语言进阶深度学习记录】三十六 程序
 - 下一篇: VNC实现原理