接上篇 設計模式,let's 「go」! (上), 繼續更新設計模式,今天介紹的設計模式有模板模式、迭代器模式、組合模式、狀態模式、**模式、橋接模式和建造者模式;
文章對設計模式的特點和使用場景進行了總結,每個設計模式分配的篇幅較少,給了解過設計模式的作為速查,幫不了解設計模式的入門, 當然具體實現才是重點,使用現實生活中的事物例子來幫助理解設計模式。
模板模式:模板模式在抽象類或父類
中抽象出演算法步驟
作為模板,模板的具體細節推遲到子類實現。
有發郵件和發簡訊兩種通訊方式;
他們都需要獲取目標資訊、格式化正文、填寫傳送方資訊,但實現不同;
在資訊類中抽象出三個步驟,具體的處理方式由兩種通訊方式各自實現;
傳送資訊時呼叫資訊類中的傳送方法,傳送方法會按照順序自動呼叫對應的步驟;
迭代器模式:迭代器模式允許呼叫者在不知道類內部實現
的情況下遍歷類元素
。
使用 slice 儲存一列戰馬,使用 map 儲存一列士兵;
戰馬和士兵結構都實現了迭代器介面;
獲取戰馬數和士兵數,遍歷戰馬和士兵,呼叫迭代器介面即可;
組合器模式:使用一種元件抽象
來同時表達集合與元素
,使用統一的介面來管理集合和元素。
將軍、隊長、士兵構成樹型層級結構,且他們都是戰士,擁有戰鬥方法;
每位戰士都儲存著自己的下級名單,沒有下級時忽略;
每個人在戰鬥時,都會率領著下級戰鬥;
狀態模式:狀態模式抽象出乙個事物的狀態
作為類,解耦事物和不同狀態下的行為;
植物有 幼苗、開花和成熟 三種狀態,且它們會通過澆水和收穫的動作進行相互轉換;
幼苗和開花時不能收穫,只能澆水,成熟狀態只能收穫,不需要再澆水;
定義三種狀態,和它們對不同動作時的行為,植物通過三種物件的替換來進行狀態轉換;
**模式:給物件提供乙個**,由**物件控制對原物件的呼叫;
小明給暗戀物件寫了一封信,在等回信;
郵遞員是個非常忙的人,來不及去收取回信;
小明好聲好氣向郵遞員要回信時,郵遞員都推拖說自己要去取;
小明發怒了,郵遞員終於抽時間去取了信給小明;
此信中郵遞員就是**模式中的**,他實現了懶載入。
回信內容見原始碼:)
橋接模式:將事務的多個維度
都抽象出來以解耦抽象與實際
之間的繫結關係,使抽象和實際向著不同維度改變;
作畫時可以使用鉛筆和原子筆等不同的筆,也可以在宣紙或普通a4紙;
抽象出筆和紙兩種物件;
自由組合筆和紙進行作畫;
建造者模式:建造者模式分離建立複雜物件的過程和細節
,使得同樣的建立過程能建立不同的物件。
中國式建築有金色屋頂和紅色大門,而意式建築有圓項和白色大門;
中國建築師和意式建築師分別擅長建造不同型別的建築;
我們在蓋不同型別的房子時先建立乙個建築師,再用建築師去建立對應風格的房子;
開發者對設計模式常陷入兩個誤區,要麼極度推崇,要麼棄如弊履。 極度推崇的人認為設計模式就是聖經,是程式設計的最高實現,以至於寫**時就往設計模式上湊,最終寫出的**冗餘沉重,讓人很難懂;而鄙棄設計模式的人實用至上,認為寫出的**能實現業務功能就好,對設計模式理也不理,結果**雜亂不堪,稍有改動就引出一大堆 bug,跟別人解釋實現時,別人聽得雲裡霧裡。
我認為設計模式就是一些定義,就像氣泡排序、快速排序這些名字一樣,便於開發者之間的交流,特別是在**中,如果你提到使用了xx模式,如果閱讀你**的人也了解這個設計模式,那麼他了解你的實現也就更加簡單了。像之前在不了解設計模式的概念時,我就已經在很多地方應用模板模式和策略模式了,但在向別人介紹**實現時,我需要說一堆**設計,別人還不一定能理解,如果以後再跟人交流時,我不需要解釋很多,只說我實現了模板模式就ok了。而且學會並深入了解了設計模式,那麼以後遇到適用設計模式的場景,就可以不用苦逼地一遍遍修改**,而直接朝著最美的方向設計了。
所以深入學習設計模式也是學習程式設計中很多問題的普遍解決方式,也是學習程式設計師之前交流的專業詞彙,意義還是挺重大的。
設計模式,Let s 「Go」! 下
接上篇 設計模式,let s go 中 繼續更新設計模式,今天介紹的設計模式有責任鏈模式 蠅量模式 直譯器模式 中介者模式 備忘錄模式 原型模式和訪問者模式 文章對設計模式的特點和使用場景進行了總結,每個設計模式分配的篇幅較少,給了解過設計模式的作為速查,幫不了解設計模式的入門,當然具體實現才是重點...
23 中設計模式
一 設計模式定義 設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。二 設計模式與框架 框架設計中必然要使用設計模式.另外,設計模式有助於對框架結構的理解,成熟的框架通常使用了多種設計模式,如果你熟悉這些設計模式,這會有助於你更好的使用框架。三 ...
23中設計模式
按照目的來分,設計模式可以分為建立型模式 結構型模式和行為型模式。建立型模式用來處理物件的建立過程 結構型模式用來處理類或者物件的組合 行為型模式用來對類或物件怎樣互動和怎樣分配職責進行描述。建立型模式用來處理物件的建立過程,主要包含以下5種設計模式 工廠方法模式 factory method pa...