Java提高篇——設計模式
設計模式簡介
設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向物件的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。
設計模式是一套被反覆使用的、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。使用設計模式是為了重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使程式碼編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。專案中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。
所謂設計模式,就是一套被反覆使用的程式碼設計經驗的總結(情境中一個問題經過證實的一個解決方案)。使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。設計模式使人們可以更加簡單方便的複用成功的設計和體系結構。將已證實的技術表述成設計模式也會使新系統開發者更加容易理解其設計思路。
什麼是 GOF(四人幫,全拼 Gang of Four)?
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名為 Design Patterns - Elements of Reusable Object-Oriented Software(中文譯名:設計模式 - 可複用的面向物件軟體元素)
四位作者合稱 GOF(四人幫,全拼 Gang of Four)。他們所提出的設計模式主要是基於以下的面向物件設計原則。
- 對介面程式設計而不是對實現程式設計。
- 優先使用物件組合而不是繼承。
在GoF的《Design Patterns: Elements of Reusable Object-Oriented Software》中給出了三類(建立型[對類的例項化過程的抽象化]、結構型[描述如何將類或物件結合在一起形成更大的結構]、行為型[對在不同的物件之間劃分責任和演算法的抽象化])共23種設計模式,包括:Abstract Factory(抽象工廠模式),Builder(建造者模式),Factory Method(工廠方法模式),Prototype(原始模型模式),Singleton(單例模式);Facade(門面模式),Adapter(介面卡模式),Bridge(橋樑模式),Composite(合成模式),Decorator(裝飾模式),Flyweight(享元模式),Proxy(代理模式);Command(命令模式),Interpreter(直譯器模式),Visitor(訪問者模式),Iterator(迭代子模式),Mediator(調停者模式),Memento(備忘錄模式),Observer(觀察者模式),State(狀態模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibility(責任鏈模式)。
參考文章:
相關推薦
Java提高篇——設計模式
設計模式簡介 設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向物件的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。 設計模式是一套被反覆使用的、多數人知曉的、經過分類
Java進階篇設計模式之二 ----- 工廠模式
class computer 社會 進階 輕松 override out 是否 return 前言 在上一篇中我們學習了單例模式,介紹了單例模式創建的幾種方法以及最優的方法。本篇則介紹設計模式中的工廠模式,主要分為簡單工廠模式、工廠方法和抽象工廠模式。 簡單工廠模式 簡單
Java進階篇設計模式之四 -----適配器模式和橋接模式
原則 pub 是我 protect 接口 logs 將不 多說 外鏈 前言 在上一篇中我們學習了創建型模式的建造者模式和原型模式。本篇則來學習下結構型模式的適配器模式和橋接模式。 適配器模式 簡介 適配器模式是作為兩個不兼容的接口之間的橋梁。這種類型的設計模式屬於結構型模
Java進階篇設計模式之五-----外觀模式和裝飾器模式
和我 logs 適配器模式 del xtra implement () 實例化 網絡遊戲 前言 在上一篇中我們學習了結構型模式的適配器模式和橋接模式。本篇則來學習下結構型模式的外觀模式和裝飾器模式。 外觀模式 簡介 外觀模式隱藏系統的復雜性,並向客戶端提供了一個客戶端可以
Java進階篇設計模式之六 ----- 組合模式和過濾器模式
對組 www. 希望 als oid block 個人 定義 lsi 前言 在上一篇中我們學習了結構型模式的外觀模式和裝飾器模式。本篇則來學習下組合模式和過濾器模式。 組合模式 簡介 組合模式是用於把一組相似的對象當作一個單一的對象。組合模式依據樹形結構來組合對象,用來表
Java進階篇設計模式之八 ----- 責任鏈模式和命令模式
如果能 clean branch pcm tle 開始 類型 mar www 前言 在上一篇中我們學習了結構型模式的享元模式和代理模式。本篇則來學習下行為型模式的兩個模式, 責任鏈模式(Chain of Responsibility Pattern)和命令模式(Comman
Java進階篇設計模式之九----- 解釋器模式和叠代器模式
簡單 目的 java進階 使用 記錄 ace 客戶端 -- pro 前言 在上一篇中我們學習了行為型模式的責任鏈模式(Chain of Responsibility Pattern)和命令模式(Command Pattern)。本篇則來學習下行為型模式的兩個模式, 解釋器模
Java進階篇設計模式之十 ---- 訪問者模式和中介者模式
前言 在上一篇中我們學習了結構型模式的直譯器模式(Interpreter Pattern)和迭代器模式(Iterator Pattern)。本篇則來學習下行為型模式的兩個模式,訪問者模式(Visitor Pattern)和中介者模式(Mediator Pattern)。 訪問者模式 簡介 訪問者
Java進階篇設計模式之十一 ---- 策略模式和模板方法模式
前言 在上一篇中我們學習了行為型模式的訪問者模式(Visitor Pattern)和中介者模式(Mediator Pattern)。本篇則來學習下行為型模式的兩個模式,策略模式(Strategy Pattern)和模板模式(Mediator Pattern)。 策略模式 簡介 策略模式(Stra
Java進階篇設計模式之十二 ---- 備忘錄模式和狀態模式
前言 在上一篇中我們學習了行為型模式的策略模式(Strategy Pattern)和模板模式(Template Pattern)。本篇則來學習下行為型模式的兩個模式,備忘錄模式(Memento Pattern)和狀態模式(Memento Pattern)。 備忘錄模式 簡介 備忘錄模式(Meme
Java進階篇設計模式之七 ----- 享元模式和代理模式
前言 在上一篇中我們學習了結構型模式的組合模式和過濾器模式。本篇則來學習下結構型模式最後的兩個模式, 享元模式和代理模式。 享元模式 簡介 享元模式主要用於減少建立物件的數量,以減少記憶體佔用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。 用通俗的話來
Java進階篇 設計模式之十四 ----- 總結篇
前言 本篇是講述之前學習設計模式的一個總結篇,其目的是為了對這些設計模式的進行一個提煉總結,能夠通過檢視看此篇就可以理解一些設計模式的核心思想。 設計模式簡介 什麼是設計模式 設計模式是一套被反覆使用的、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。 為什麼使用設計模式 使用
Java進階篇設計模式之九----- 直譯器模式和迭代器模式
前言 在上一篇中我們學習了行為型模式的責任鏈模式(Chain of Responsibility Pattern)和命令模式(Command Pattern)。本篇則來學習下行為型模式的兩個模式, 直譯器模式(Interpreter Pattern)和迭代器模式
Java面試題設計模式篇介面卡模式
目的 介面卡模式為了把不符合的介面實現,轉換為呼叫方期待的介面。 類圖 實戰案例 比如我的專案中,原來的一部分業務資料查詢的是資料庫,現在需要改為Hsqldb查詢。原來的程式碼結構如下: 程式碼 原來的資料操作介面DbDao: package com.p
Java提高篇——單例模式
介紹 在我們日常的工作中經常需要在應用程式中保持一個唯一的例項,如:IO處理,資料庫操作等,由於這些物件都要佔用重要的系統資源,所以我們必須限制這些例項的建立或始終使用一個公用的例項,這就是我們今天要介紹的——單例模式(Singleton)。 單例模式(Singleton Pattern)是 J
[轉]Java面試題——設計模式篇…
128、開發中都用到了那些設計模式?用在什麼場合? 答:每個模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在重複相同的工作。主要用到了MVC的設計模式。用來開發JSP/Servlet或者J2EE的相關應用。簡單工廠模式等
Java進階篇設計模式之一 ----- 單例模式
前言 在剛學程式設計沒多久就聽說過設計模式的大名,不過由於當時還是個徹徹底底的菜鳥,並沒有去觸碰。直到在開始工作中對簡單的業務程式碼較為熟悉之後,才正式的接觸設計模式。當時最早接觸的設計模式是工廠模式,不過本文講的是單例模式,這裡就留著下篇文章中在講解。至於為什麼先講解單例模式? 那是因為單例模式是設計模式中
Java進階篇設計模式之四 -----介面卡模式和橋接模式
前言 在上一篇中我們學習了建立型模式的建造者模式和原型模式。本篇則來學習下結構型模式的介面卡模式和橋接模式。 介面卡模式 簡介 介面卡模式是作為兩個不相容的介面之間的橋樑。這種型別的設計模式屬於結構型模式,它結合了兩個獨立介面的功能。 簡單的來說就是通過某個介面將不相容的兩個類進行相容,俗稱轉換器。 生活
Java進階篇設計模式之三 ----- 建造者模式和原型模式
前言 在上一篇中我們學習了工廠模式,介紹了簡單工廠模式、工廠方法和抽象工廠模式。本篇則介紹設計模式中屬於建立型模式的建造者模式和原型模式。 建造者模式 簡介 建造者模式是屬於建立型模式。建造者模式使用多個簡單的物件一步一步構建成一個複雜的物件。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式
Java面試題設計模式篇單例模式
1 餓漢式-不要求延遲載入的情況下使用 餓漢方式一:Enum public enum Singleton { INSTANCE; public void whateverMethod() { } } 餓漢方式二:靜態類變數 如果