設計模式學習歷程
今天突發奇想,在道上開個貼,記錄各道友學習設計模式的歷程、心得。好了,話不多說,我先來說說最近學習的proxy、decorator、adapter、bridge等模式:
為什麼會先提這幾個呢?
這幾個模式,單從uml圖或者程式碼結構看來,兩兩相似。特別是proxy與decorator很多人都混了,包括我。於是我得出自己的結論:學習模式不只是停留在看懂程式碼,而是懂其意,也就是老師總提的道。
首先看看proxy與decorator,看了很多關於他們的介紹,雖然從字面上看區別了。但一直不能區分出他們在程式碼上的區別。直到最近想到了個很生動的例子:演員與替身演員。演員就是decorator,換了套衣服、換了外表就成新角色,還自始至終都是他本人;替身演員則是proxy,真正的演員不來做這些表演,由替身演員來完成。這樣的理解,很快我能從概念與應用中區分開他們的用法了。
接下來,我們談談adapter與bridge,這兩者不像proxy與decorator那麼相似,但是也有幾分相似。adapter是把兩個不相關的類關聯起來,透過適配者把被適配者給關聯進來;而bridge是把物件抽象出其靜態的共公部分與行為相分離,透過行為部分被關聯到抽象的例項中。這個抽象的例項看起來很像適配者,而行為看起來很像被適配者,但是adapter模式中的被適配者與要適配出的物件一點關係都沒有,bridge模式中的抽象與行為卻是有關係的,同屬於一個物件。
好了,今天先談到這裡,改天繼續學習,繼續更新,希望大家能給我更多的意見與建議並也一起參議!
為什麼會先提這幾個呢?
這幾個模式,單從uml圖或者程式碼結構看來,兩兩相似。特別是proxy與decorator很多人都混了,包括我。於是我得出自己的結論:學習模式不只是停留在看懂程式碼,而是懂其意,也就是老師總提的道。
首先看看proxy與decorator,看了很多關於他們的介紹,雖然從字面上看區別了。但一直不能區分出他們在程式碼上的區別。直到最近想到了個很生動的例子:演員與替身演員。演員就是decorator,換了套衣服、換了外表就成新角色,還自始至終都是他本人;替身演員則是proxy,真正的演員不來做這些表演,由替身演員來完成。這樣的理解,很快我能從概念與應用中區分開他們的用法了。
接下來,我們談談adapter與bridge,這兩者不像proxy與decorator那麼相似,但是也有幾分相似。adapter是把兩個不相關的類關聯起來,透過適配者把被適配者給關聯進來;而bridge是把物件抽象出其靜態的共公部分與行為相分離,透過行為部分被關聯到抽象的例項中。這個抽象的例項看起來很像適配者,而行為看起來很像被適配者,但是adapter模式中的被適配者與要適配出的物件一點關係都沒有,bridge模式中的抽象與行為卻是有關係的,同屬於一個物件。
好了,今天先談到這裡,改天繼續學習,繼續更新,希望大家能給我更多的意見與建議並也一起參議!
相關文章
- 我學習USB設計的歷程
- 計算機學習歷程計算機
- 談談自己學習設計模式的過程設計模式
- node學習歷程
- Java 學習歷程Java
- 學習GCD歷程GC
- 設計模式學習設計模式
- 設計模式學習——代理模式設計模式
- Flutter 的學習歷程Flutter
- Go學習歷程(一)Go
- Java設計模式學習Java設計模式
- MapReduce設計模式學習設計模式
- FSM 設計模式學習設計模式
- 設計模式-建立型模式學習設計模式
- 設計模式學習-物件池模式設計模式物件
- 設計模式學習-物件模板模式設計模式物件
- 設計模式學習-原型模式設計模式原型
- 設計模式學習-單例模式設計模式單例
- 設計模式學習-建造者模式設計模式
- 設計模式學習-工廠模式設計模式
- 設計模式學習-設計原則設計模式
- 設計模式(一)學習設計模式的好處設計模式
- 設計模式快速學習(八)委派模式設計模式
- 設計模式快速學習(七)策略模式設計模式
- 設計模式快速學習(六)模板模式設計模式
- 設計模式學習之單例模式設計模式單例
- 學習筆記-設計模式:MVC模式筆記設計模式MVC
- 設計模式學習(十八)中介者模式設計模式
- 深度學習發展歷程深度學習
- C++學習歷程 (轉)C++
- 設計模式學習筆記設計模式筆記
- 學習筆記-設計模式筆記設計模式
- Java設計模式學習二Java設計模式
- 淺談學習設計模式設計模式
- Java設計模式學習筆記(一) 設計模式概述Java設計模式筆記
- 設計模式學習-裝飾模式,橋接模式設計模式橋接
- 學習高校課程-軟體設計模式-建造者模式和原型模式(lec4)設計模式原型
- SpringBoot 併發程式設計學習歷程(絕對的乾貨)Spring Boot程式設計