宣告:文章裡面某些例子只代表我個人的觀點,分享出來是希望能夠幫助大家理解設計模式,如果認為比較牽強還請手下留情,程式設計師不容易啊~
。在前面兩篇文章中我們講解了建立型設計模式,所謂建立就是建立物件,各種設計模式呢就是給我們建立物件提供了更好的方法,讓我們的**設計更加合理,符合oo
,而不是流線式的程式設計,你懂得。
那麼接下來,我會給大家講解一下我對結構型設計模式的理解,結構型設計模式顧名思義是在不增加任何外在的物件的基礎之上對結構進行改造,使其煥然一新。今天主要給大家介紹裝飾模式。
一、裝飾模式
聽到裝飾大家都不陌生,我們新家需要裝修,沙發、衣櫥、床、這些我都買好了,這些家具到底該怎麼放呢呢? 很多種方案,不知道哪一種好。oh~ my god!
不同的擺放效果會不一樣,糾結啊。
女生呢出門前最愛的就是服裝搭配了,出門前在鏡子面前各種式,不到最後離開的一分鐘是不會決定的,這期間就會有很多種裝飾。
我們試試裝飾這個過程的uml
建模呢:
從上面兩個uml
類圖中我們看到了裝飾模式的的兩個要點:
1.裝飾者需要知道裝飾物件。(uml
類圖中聚合可以體現)
2.裝飾物件(人或者房屋)需要把一系列裝飾行為交給裝飾者,讓裝飾者幫 忙裝飾,所以要用到繼承。
綜上所述:可以理解為把自身的一些行為交給別人來完成。
比如房子裝飾:就是交給另乙個物件來裝飾,房子不需要管裝飾這個過程。
比如穿衣:人不需要管穿衣這個過程,把這個行為交給另乙個物件來實現了,由主動變為被動。
比如做作業:不愛學習的同學把作業交給學習好的同學幫忙完成。
下面我們來寫寫房屋裝飾**:
結果:
從上面的結果我們知道,把自身的一系列行為交給別人做有什麼好處呢?
答案就是:這些行為的順序可以變換。
以前我們舉的一些例子都是簡單的生活中的例子,下面我舉個實際框架中應用例項,以便更具說服力!讀取檔案流的例子。我看了一下.net 框架中實現
io的**。
先截圖說明io
流也是用的裝飾模式。
建模:好啦,裝飾模式就講到這裡了。我們回顧一下,裝飾模式兩個要點:
1.裝飾者要知道裝飾物件。
2.裝飾物件要把一些列行為交給裝飾者來完成。
設計模式之結構型
接下來進行的比賽就是死亡之組 結構型模式,到底誰能夠晉級呢?這個我們現在還無法 那就趕緊看這場精彩的比賽吧!首先有乙個疑問,為什麼分為結構型呢?她們都從程式的結構上降低了模組之間的耦合。接下來一一介紹各位美麗的小姐 設配器小姐 為別人的溝通提供方便,當乙個完全不懂英語的人需要和美國人交流時,我們就需...
設計模式 結構型之享元 flyweight 模式
定義 使用場景 uml圖 實現 共享物件 public class flyweight public void method 池子工廠 public class flyweightfactory 公有獲取單例 public static flyweightfactory getfacttory 獲取...
設計模式攻略 結構型模式之Adapter模式
概要 adapter模式,中文名為介面卡模式,從字面意思來看不難理解,就是通過模組,介面的包裝和適配達到模組介面相容協作的目的。這算是乙個很簡單的模式,就算你從來沒看過設計模式,從未聽說過adapter模式,聽我後面的介紹後,也許你會很不屑的說,早在我之前設計過的n個專案中,用過這種所謂的adapt...