原创 設計模式(二十六)----行爲型模式之備忘錄模式

1 概述 備忘錄模式提供了一種狀態恢復的實現機制,使得用戶可以方便地回到一個特定的歷史步驟,當新的狀態無效或者存在問題時,可以使用暫時存儲起來的備忘錄將狀態復原,很多軟件都提供了撤銷(Undo)操作,如 Word、記事本、Photoshop

原创 設計模式(二十五)----行爲型模式之訪問者模式

1 概述 定義: 封裝一些作用於某種數據結構中的各元素的操作,它可以在不改變這個數據結構的前提下定義作用於這些元素的新的操作。 2 結構 訪問者模式包含以下主要角色: 抽象訪問者(Visitor)角色:定義了對每一個元素(Element

原创 設計模式(二十四)----行爲型模式之迭代器模式

1 概述 定義: 提供一個對象來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示。 2 結構 迭代器模式主要包含以下角色: 抽象聚合(Aggregate)角色:定義存儲、添加、刪除聚合元素以及創建迭代器對象的接口。 具體

原创 設計模式(二十三)----行爲型模式之中介者模式

1 概述 一般來說,同事類之間的關係是比較複雜的,多個同事類之間互相關聯時,他們之間的關係會呈現爲複雜的網狀結構,這是一種過度耦合的架構,即不利於類的複用,也不穩定。例如在下左圖中,有六個同事類對象,假如對象1發生變化,那麼將會有4個對象受

原创 設計模式(二十二)----行爲型模式之觀察者模式

1 概述 定義: 又被稱爲發佈-訂閱(Publish/Subscribe)模式,它定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態變化時,會通知所有的觀察者對象,使他們能夠自動更新自己。 2 結構 在觀

原创 設計模式(二十一)----行爲型模式之狀態模式

1 概述 【例】通過按鈕來控制一個電梯的狀態,一個電梯有開門狀態,關門狀態,停止狀態,運行狀態。每一種狀態改變,都有可能要根據其他狀態來更新處理。例如,如果電梯門現在處於運行時狀態,就不能進行開門操作,而如果電梯門是停止狀態,就可以執行開門

原创 設計模式(二十)----行爲型模式之責任鏈模式

1、概述 在現實生活中,常常會出現這樣的事例:一個請求有多個對象可以處理,但每個對象的處理條件或權限不同。例如,公司員工請假,可批假的領導有部門負責人、副總經理、總經理等,但每個領導能批准的天數不同,員工必須根據自己要請假的天數去找不同的領

原创 設計模式(十九)----行爲型模式之命令模式

1、概述 日常生活中,我們出去喫飯都會遇到下面的場景。 定義: 將一個請求封裝爲一個對象,使發出請求的責任和執行請求的責任分割開。這樣兩者之間通過命令對象進行溝通,這樣方便將命令對象進行存儲、傳遞、調用、增加與管理。命令是相同的,而顧客服

原创 設計模式(十八)----行爲型模式之策略模式

1、概述 先看下面的圖片,我們去旅遊選擇出行模式有很多種,可以騎自行車、可以坐汽車、可以坐火車、可以坐飛機。 作爲一個程序猿,開發需要選擇一款開發工具,當然可以進行代碼開發的工具有很多,可以選擇Idea進行開發,也可以使用eclipse進

原创 設計模式(十七)----行爲型模式之模板方法模式

行爲型模式用於描述程序在運行時複雜的流程控制,即描述多個類或對象之間怎樣相互協作共同完成單個對象都無法單獨完成的任務,它涉及算法與對象間職責的分配。 行爲型模式分爲類行爲模式和對象行爲模式,前者採用繼承機制來在類間分派行爲,後者採用組合或聚

原创 設計模式(十六)----結構型模式之代理享元模式

1 概述 定義: 運用共享技術來有效地支持大量細粒度對象的複用。它通過共享已經存在的對象來大幅度減少需要創建的對象數量、避免大量相似對象的開銷,從而提高系統資源的利用率。 2 結構 享元(Flyweight )模式中存在以下兩種狀態:

原创 設計模式(十五)----結構型模式之外觀模式

1 概述 有些人可能炒過股票,但其實大部分人都不太懂,這種沒有足夠了解證券知識的情況下做股票是很容易虧錢的,剛開始炒股肯定都會想,如果有個懂行的幫幫手就好,其實基金就是個好幫手,支付寶裏就有許多的基金,它將投資者分散的資金集中起來,交由專業

原创 設計模式(十四)----結構型模式之組合模式

1 概述 對於這個圖片肯定會非常熟悉,上圖我們可以看做是一個文件系統,對於這樣的結構我們稱之爲樹形結構。在樹形結構中可以通過調用某個方法來遍歷整個樹,當我們找到某個葉子節點後,就可以對葉子節點進行相關的操作。可以將這顆樹理解成一個大的容器

原创 設計模式(十三)----結構型模式之橋接模式

1 概述 現在有一個需求,需要創建不同的圖形,並且每個圖形都有可能會有不同的顏色。我們可以利用繼承的方式來設計類的關係: 我們可以發現有很多的類,假如我們再增加一個形狀或再增加一種顏色,就需要創建更多的類。 試想,在一個有多種可能會變化的

原创 設計模式(十二)----結構型模式之代理模式和裝飾者模式的區別

1、代理和裝飾者的區別 靜態代理和裝飾者模式的區別: 相同點: 都要實現與目標類相同的業務接口 在兩個類中都要聲明目標對象 都可以在不修改目標類的前提下增強目標方法 不同點: 目的不同 裝飾者是爲了增強目標對象