你好,歡迎來到IOS教程網

 Ios教程網 >> IOS教程 >> 關於IOS教程 >> IOS設計模式之組合設計模式

IOS設計模式之組合設計模式

編輯:關於IOS教程

Android中對組合模式的應用,可謂是泛濫成粥,隨處可見,那就是View和ViewGroup類的使用。在android UI設計,幾乎所有的widget和布局類都依靠這兩個類。

組合模式,Composite Pattern,是一個非常巧妙的模式。幾乎所有的面向對象系統都應用到了組合模式。

通過本文將讓你學會軟件開發中的"何為樹形結構"、"何為組合模式"、"組合模式可以解決的問題"等相關知識。

內容大綱:

1、樹形結構

2、組合模式

3、編寫文件夾系統

1、樹形結構(大神或者計算機基礎很好的可以跳過,不過這後面通過用面向對象的代碼實現的樹形結構,值得一閱)

   在介紹組合設計模式之前,有必要先簡單講講樹形結構,百度一下"樹形結構",你很容易找到關於樹形結構的相關基本概

念:

   樹形結構是一層次的嵌套結構。 一個樹形結構的外層和內層有相似的結構, 所以這種結構多可以遞歸的表示。

   經典數據結構中的各種樹狀圖是一種典型的樹形結構:一顆樹可以簡單的表示為根, 左子樹, 右子樹。 左子樹和右子樹又有自己的子樹。

  

  樹形結構很容易懂,就和倒過來的大樹一樣,然後有一個根節點,通過根節點我們可以拿到根節點相關聯的子節點,通過子節點我們可以拿到子子節點:

  

  回到上面從百度拷貝來的關於"樹形結構"的基本概念,它提到樹形結構是有層次嵌套的結構,看下面的圖,正因為樹形結構是層次嵌套的結構,

  所以從整體和部分的角度來看,外層和內層具有相似的結構,在算法數據結構裡是可以用遞歸算法表示的,但是要注意,

  遞歸是面向過程語言的說法哦,因為遞歸思想本質也是站在代碼邏輯的執行過程來考慮的。

  另外順便也補充一個數學圖形理論的東西:分形。這個也是分形圖形理論的內容。👻感興趣的同學可以百度了解。

 

  而在這裡我們需要站在面向對象的角度來說,這個模式就是組合模式,但從思想上和面向過程的遞歸算法思想是類似的。

  接下來我們通過代碼來實現如下圖的簡單二叉樹的結構,當然是用Objective-C來面相對象的實現喽:  

   

  1-1、首先我們需要創建節點來表示上圖中的每個元素:


  1-2、然後我們在ViewController.m去使用這個Node節點類來實現上面的二叉樹

  1-3、最後打印看看結果是不是按照二叉樹,從左往右遍歷的:

2、組合模式

  先看看組合模式的UML圖,看不懂可以跳過,我也解釋不清楚,說不定以後就看懂了。

  接下來就通過代碼實現下圖的組合模式,和上面二叉樹類似,差別下面的不是二叉樹,代碼的差別就是節點類內部用了數組來存儲子節點:

  2-1、創建一個節點對象:

 

  2-2、看看ViewController.m中是如何使用這個節點的:

  

  2-3、打印出結果:

  

3、編寫文件夾系統

關於文件夾系統,其實在應用中或者是PC端應用中都很常見,一個文件夾包含多個子文件夾和子文件,而子文件夾又包含它的子文件夾和子文件,依次層次往下遞歸。

先看看動態效果圖:

這個顯然就是組合模式實現的問題域了,所以下面直接看源碼吧:

  就不上代碼給大家看了👻,還是直接分享百度雲的下載鏈接吧:鏈接: http://pan.baidu.com/s/1gdRLdIF 密碼: h8v3

以上所述是小逼給大家介紹的IOS設計模式之組合設計模式 ,希望對大家有所幫助!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved