這一段時間面試,總會被問到對設計模式的理解。雖然算是個新手,但是實際上上乙份工作當中還是用到了很多設計模式,再加上spring本身的設計模式,每次面試基本在這塊要花費相當多的時間準備和覆盤。今天開始重新再看一遍神書head first,再來總結一下對於其中設計模式的理解。
書中說到策略模式定義了並且封裝了演算法族,讓演算法族之間可以互相替換,這個模式讓演算法和使用演算法的客戶之間的關係變為低耦合。書中例子比較形象和立體,第一次看的時候還不能建立有效理解,沉下心來多看幾次之後,現在回想起來就可以形成乙個相對之前較可靠的知識體系。
按照我理解的策略模式,策略模式的起點其實是乙個超類,即所有子物件的乙個統一的抽象的概念,比如鴨子這個類基於綠頭鴨,假鴨子,肉鴨,野鴨。然後就要抽象出鴨子的行為作為分離的類。這樣做的優點在於充分利用了oo語言的多型,讓行為的實現脫離了鴨子這個子類,這樣避免了在增加子類的過程當中,又需要寫多餘的重複的**。如果行為(演算法)依附於子類實現,是十分不利於管理的。所以如果讓行為變成乙個介面並且讓行為子類去實現這些介面,那麼子類是不需要關心實現內容的,只需要呼叫這樣避免了重複而且高度總結了不同的實現部分,**變得利於管理了。
設計模式個人理解
第八章 模板方法模式 定義 在乙個方法中定義乙個演算法骨架,而將一些步驟延遲到子類中。模板方法使得子類在不改變演算法結構的情況下,重新定義演算法的某些步驟。個人理解 即演算法都封裝到抽象類中,部分細節的實現定義抽象方法或提供預設實現,由子類實現不同的具體操作或覆蓋父類提供的預設方法。優點 將整個演算...
設計模式個人理解總結
單例 通過將建構函式私有化,並且建立好唯一乙個例項後,將該例項提供其他類。多例 建構函式私有化,但可以返回指定個數的例項,通過一定標識區分返回哪個。觀察者 將觀察者作為 載入到主題的資料成員監聽集合中,當主題發生改變時,依次觸發所有的 工廠模式 通過區分識別符號,返回特定的新建物件。物件實現的公共介...
個人理解PHP設計模式
1,外觀模式原理 a類 b類 c類 然後在d類裡面呼叫a類b類c類,然後在e類裡面呼叫d類,這就是外觀模式。在e類裡面就只需要簡單呼叫d類,而不需要關心abc類的實現方法,說白了就是簡化呼叫。2.中介者模式 中介者就是把一些邏輯處理放在中介者中處理,就類似於房屋中介,賣房子的找中介賣房子,買房子的找...