原创 Java設計模式之外觀模式/門面模式(Facade)

1. 外觀模式 1.1 概述        外觀模式比較簡單,是應用比較廣泛的一種設計模式。        舉個栗子說明一下,比如說,現在我在家炒菜,我需要準備菜、調料、油等,然後再下鍋炒,最後完成。但是,如果我們去飯店喫,只需要跟服務員

原创 Java設計模式之抽象工廠模式的改進

抽象工廠模式在我的上一篇博文裏已經詳細介紹過,地址:https://blog.csdn.net/zaoan_2010/article/details/81987011 它的缺點主要體現在,需要新增產品時,做的改動比較多。針對這個缺點對抽象

原创 Java設計模式之原型模式(Prototype)—— 淺拷貝和深拷貝

1. 原型模式 1.1 定義 原型模式,用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。(引自《大話設計模式》) 1.2 使用場景 這裏舉例說明一下。比如說現在我要複製一本書。首先,我定義了這本書的相關屬性,有書名、價格、

原创 Java設計模式之模板方法模式(TemplateMethod)

1. 模板方法模式 1.1 定義 模板方法模式,定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重新定義該算法的某些特定步驟。(引自《大話設計模式》) 1.2 基本結構圖 1.3 模式理

原创 Java設計模式之工廠模式-簡單工廠模式、工廠方法模式、抽象工廠模式

  1. 簡單工廠模式   舉例說明:實現一個計算器的功能 先上類圖,如下:        首先是一個運算類(Operation),它主要包含一個方法(getResult()),用於計算所得結果,然後加減乘除分別繼承它,這樣便於擴展,如

原创 Java設計模式之觀察者模式/發佈訂閱模式(Observer)

1. 觀察者模式 1.1 定義 觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,是它們能夠自動更新自己。(引自《大話設計模式》) 1.2 解釋 觀察者模式,

原创 Java設計模式之裝飾器模式(Decorator)

1. 簡單介紹裝飾器模式 裝飾模式,動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更爲靈活。(引自《大話設計模式》) 裝飾器模式的結構圖如下: 逐一介紹一下 Component:對象接口,也可以是一個抽象類,是被

原创 Java設計模式之建造者模式/生成器模式(Builder)

1. 引入建造者模式 這裏改變了一下思路,先舉一個例子,再總結得出建造者模式的基本結構。 建造者,顧名思義,建造產品的人,什麼產品呢?假設現在建造一個小人。一個小人,要有頭、有身子、有手、有腳。 首先來個人,有屬性:頭、身子、手、腳。

原创 Java設計模式之享元模式(Flyweight)

一、概述 舉兩個例子。 例子1, A找牛二做了一個輕量小型門戶網站,牛二花了幾天做好後,租了服務器a,完工。後來,B看到了,覺得不錯,也找牛二做了一個這樣的網站,牛二就複製了之前的那份代碼,租了服務器b,完工。後來C、D...... 例子

原创 Java設計模式之迭代器模式(Iterator)

一、概述 一看到Iterator,相信大家都很熟悉,沒錯,Iterator就是你們熟悉的它,主要功能就是迭代對象進行遍歷,由於它太太太普遍了,所以Java已經將它融爲到語言中了。在jdk中也提供了java.util.Iterator接口,

原创 Java設計模式之橋接模式(Bridge)

一、引入橋接模式 舉個例子,現在有M牌手機,手機裏安裝了通訊錄,這時又有一N牌手機,也安裝了通訊錄,如何實現。從面相對象的設計原則出發,設計類圖如下。    如果此時,兩款手機又安裝了聊天軟件呢。 簡單寫下代碼,幫助理解。 手機品牌父

原创 Java設計模式之組合模式(Composite)

一、概述 我們常常可以看到這樣一種形式,比如說電腦中的磁盤管理,我的電腦中有C盤、D盤、E盤,在C盤中又有A文件夾、B文件夾等,在A文件夾下又有A1文件夾、A2文件夾、A3文件等等;再比如說在桌子上有揹包、電腦、水杯、書架、筆筒等,在揹包

原创 Java設計模式之備忘錄模式(Memento)

一、概述 當我們打遊戲時,如果打boss時掛了,我們希望下次再打boss時,玩家的戰鬥值能恢復到打boss之前。就是說,我們希望在某一時刻,可以將遊戲的各種數據保存,這樣當我們需要時,可以恢復到這個狀態。這裏引入了一種新的模式——備忘錄模

原创 Java設計模式之適配器模式(Adapter)

  一、適配器模式 1. 定義 適配器模式,將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。(引自《大話設計模式》) 2. 說明 這有點類似生活中用到的電源變壓器,可以把電源

原创 Java設計模式之狀態模式(State)

1. 引入狀態模式 (該例子引入《大話設計模式》) 作爲程序員,加班是家常便飯。我們就每日的工作狀態寫一下。 9:00-11:00 上午上班 11:00-13:00 午休 13:00-18:00 下午上班 18:00 下班 18:00 以