原创 里氏代換原則

里氏代換原則的定義是——子類型必須能夠替換掉他們的父類型。 在學習類的繼承時有一個概念,如果子類繼承自父類,那麼子類就應該能以父類的身份出現。簡單說,如果一個軟件實體使用的是一個父類的話,那麼就肯定適用其子類,並且該軟件實體察覺不到父類對

原创 設計模式之備忘錄模式

GOF對備忘錄模式的定義就是:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。這樣以後就可以將該對象回覆到原先的狀態。 來看看備忘錄模式的基本代碼 /** * * @author ricardo * @

原创 設計模式之命令模式

GOF對命令模式的定義是:將一個請求封裝成對象,從而使用戶可用不同的請求對客戶進行參數化,對請求排隊或記錄請求日誌,並支持可撤銷操作。 先看基本代碼 //抽象命令 public abstract class Command { prot

原创 設計模式之狀態模式

GOF對狀態模式的定義是:當一個對象的內在狀態改變時,允許改變其行爲,這個對象看起來像是改變了其類。先看基本代碼 /** * * @author ricardo * @Time 上午12:31:24 * @Function:抽象

原创 設計模式之策略模式

GOF對策略模式的定義:策略模式定義了算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化不會影響到使用算法的客戶。先看基本代碼 /** * * @author ricardo * @Time 下午10:55:43

原创 設計模式之裝飾者模式

GOF對裝飾者模式的定義式 :動態的給一個對象添加一些額外的職責,就增加功能來說,裝飾者模式比生成子類會更加靈活。先看基本代碼。 /** * * @author ricardo * @Time 下午9:11:18 * @Func

原创 設計模式之觀察者模式

GOF對觀察者模式的定義是:觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象在狀態發生改變時,會通知所有的觀察者對象,讓他們自動更新自己。先來看基本代碼。 /** * * @author r

原创 設計模式之迭代器模式

迭代器模式曾經是一種最常見、最簡單的設計模式,提供了一種順序訪問某個集合中所有元素的解決方案,而不用瞭解元素的底層操作。現在的新興語言都將迭代器集成了進去,但是瞭解迭代器模式的實現對理解面向對象開發而言仍然尤其意義。 GOF對迭代器模式的

原创 設計模式之享元模式

GOF對享元模式的定義:運用共享技術有效地支持大量細粒度的對象。下面給出基本代碼 /** * * @author ricardo * @Time 下午10:25:48 * @Function:抽象享元類 * */ publi

原创 設計模式之模板方法模式

GOF對模板方法模式的定義:定義一個操作中的算法骨架,而將一些步驟延遲到子類中。Template使得子類可以不改變一個算法的結構而重新定義算法的某些特定步驟。先看下基本代碼結構。 public abstract class Abstra

原创 設計模式之中介者模式

GOF對中介者模式的定義是:用一箇中介對象來封裝一系列的對象交互。中介者使各個對象不需要顯式的互相引用,從而使其耦合鬆散,二期額可以獨立地改變他們之間的交互。 來看看基本代碼 /** * * @author ricardo * @

原创 設計模式之解釋器模式

解釋器模式要解決的問題是,當一種特定類型的問題發生至足夠高的頻率後,那麼就值得將此問題中的各個實例表述爲一個簡單預言中的句子,以此來構建一個解釋器,這個解釋器通過這些句子來解決該問題。 GOF對解釋器模式的定義是:給定一個語言,定義它的文

原创 設計模式之組合模式

GOF對組合模式的定義是:將對象組合成樹形結構以表示“部分-整體”的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。來看基本代碼 /** * * @author ricardo * @Time 下午10:33:52

原创 設計模式之外觀模式

GOF對外觀模式的定義是:爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易被使用。看下基本代碼 現在有ABC三個子系統類 public class SubA { public void m

原创 設計模式之代理模式

GOF對代理模式的定義是:爲其他對象提供一種代理以控制對這個對象的訪問。先看基本代碼 public abstract class Subject { public abstract void Request(); }public cla