最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IOS設(shè)計(jì)模式之組合設(shè)計(jì)模式

 更新時(shí)間:2016年02月29日 09:35:50   作者:Good_Wang  
組合模式,Composite Pattern,是一個(gè)非常巧妙的模式。幾乎所有的面向?qū)ο笙到y(tǒng)都應(yīng)用到了組合模式,接下來(lái)通過(guò)本文給大家介紹IOS設(shè)計(jì)模式之組合設(shè)計(jì)模式,需要的朋友參考下

Android中對(duì)組合模式的應(yīng)用,可謂是泛濫成粥,隨處可見(jiàn),那就是View和ViewGroup類的使用。在android UI設(shè)計(jì),幾乎所有的widget和布局類都依靠這兩個(gè)類。

組合模式,Composite Pattern,是一個(gè)非常巧妙的模式。幾乎所有的面向?qū)ο笙到y(tǒng)都應(yīng)用到了組合模式。

通過(guò)本文將讓你學(xué)會(huì)軟件開發(fā)中的"何為樹形結(jié)構(gòu)"、"何為組合模式"、"組合模式可以解決的問(wèn)題"等相關(guān)知識(shí)。

內(nèi)容大綱:

1、樹形結(jié)構(gòu)

2、組合模式

3、編寫文件夾系統(tǒng)

1、樹形結(jié)構(gòu)(大神或者計(jì)算機(jī)基礎(chǔ)很好的可以跳過(guò),不過(guò)這后面通過(guò)用面向?qū)ο蟮拇a實(shí)現(xiàn)的樹形結(jié)構(gòu),值得一閱)

   在介紹組合設(shè)計(jì)模式之前,有必要先簡(jiǎn)單講講樹形結(jié)構(gòu),百度一下"樹形結(jié)構(gòu)",你很容易找到關(guān)于樹形結(jié)構(gòu)的相關(guān)基本概

念:

   樹形結(jié)構(gòu)是一層次的嵌套結(jié)構(gòu)。 一個(gè)樹形結(jié)構(gòu)的外層和內(nèi)層有相似的結(jié)構(gòu), 所以這種結(jié)構(gòu)多可以遞歸的表示。

   經(jīng)典數(shù)據(jù)結(jié)構(gòu)中的各種樹狀圖是一種典型的樹形結(jié)構(gòu):一顆樹可以簡(jiǎn)單的表示為根, 左子樹, 右子樹。 左子樹和右子樹又有自己的子樹。

  

  樹形結(jié)構(gòu)很容易懂,就和倒過(guò)來(lái)的大樹一樣,然后有一個(gè)根節(jié)點(diǎn),通過(guò)根節(jié)點(diǎn)我們可以拿到根節(jié)點(diǎn)相關(guān)聯(lián)的子節(jié)點(diǎn),通過(guò)子節(jié)點(diǎn)我們可以拿到子子節(jié)點(diǎn):

  

  回到上面從百度拷貝來(lái)的關(guān)于"樹形結(jié)構(gòu)"的基本概念,它提到樹形結(jié)構(gòu)是有層次嵌套的結(jié)構(gòu),看下面的圖,正因?yàn)闃湫谓Y(jié)構(gòu)是層次嵌套的結(jié)構(gòu),

  所以從整體和部分的角度來(lái)看,外層和內(nèi)層具有相似的結(jié)構(gòu),在算法數(shù)據(jù)結(jié)構(gòu)里是可以用遞歸算法表示的,但是要注意,

  遞歸是面向過(guò)程語(yǔ)言的說(shuō)法哦,因?yàn)檫f歸思想本質(zhì)也是站在代碼邏輯的執(zhí)行過(guò)程來(lái)考慮的。

  另外順便也補(bǔ)充一個(gè)數(shù)學(xué)圖形理論的東西:分形。這個(gè)也是分形圖形理論的內(nèi)容。👻感興趣的同學(xué)可以百度了解。

 

  而在這里我們需要站在面向?qū)ο蟮慕嵌葋?lái)說(shuō),這個(gè)模式就是組合模式,但從思想上和面向過(guò)程的遞歸算法思想是類似的。

  接下來(lái)我們通過(guò)代碼來(lái)實(shí)現(xiàn)如下圖的簡(jiǎn)單二叉樹的結(jié)構(gòu),當(dāng)然是用Objective-C來(lái)面相對(duì)象的實(shí)現(xiàn)嘍:  

   

  1-1、首先我們需要?jiǎng)?chuàng)建節(jié)點(diǎn)來(lái)表示上圖中的每個(gè)元素:


  1-2、然后我們?cè)赩iewController.m去使用這個(gè)Node節(jié)點(diǎn)類來(lái)實(shí)現(xiàn)上面的二叉樹

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

2、組合模式

  先看看組合模式的UML圖,看不懂可以跳過(guò),我也解釋不清楚,說(shuō)不定以后就看懂了。

  接下來(lái)就通過(guò)代碼實(shí)現(xiàn)下圖的組合模式,和上面二叉樹類似,差別下面的不是二叉樹,代碼的差別就是節(jié)點(diǎn)類內(nèi)部用了數(shù)組來(lái)存儲(chǔ)子節(jié)點(diǎn):

  2-1、創(chuàng)建一個(gè)節(jié)點(diǎn)對(duì)象:

 

  2-2、看看ViewController.m中是如何使用這個(gè)節(jié)點(diǎn)的:

  

  2-3、打印出結(jié)果:

  

3、編寫文件夾系統(tǒng)

關(guān)于文件夾系統(tǒng),其實(shí)在應(yīng)用中或者是PC端應(yīng)用中都很常見(jiàn),一個(gè)文件夾包含多個(gè)子文件夾和子文件,而子文件夾又包含它的子文件夾和子文件,依次層次往下遞歸。

先看看動(dòng)態(tài)效果圖:

這個(gè)顯然就是組合模式實(shí)現(xiàn)的問(wèn)題域了,所以下面直接看源碼吧:

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

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

相關(guān)文章

  • iOS 使用AFN上傳視頻到服務(wù)器示例代碼

    iOS 使用AFN上傳視頻到服務(wù)器示例代碼

    本篇文章主要介紹了iOS 使用AFN上傳視頻到服務(wù)器示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-04-04
  • iOS如何用100行代碼實(shí)現(xiàn)簡(jiǎn)單的抽屜效果

    iOS如何用100行代碼實(shí)現(xiàn)簡(jiǎn)單的抽屜效果

    最近在網(wǎng)上看到一些抽屜效果,看起來(lái)很酷!很眩!但是,下不下來(lái)看代碼, 所以決定還是自己寫吧!!這篇文章通過(guò)近100行的代碼就實(shí)現(xiàn)了簡(jiǎn)單的抽屜效果,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-10-10
  • 解決iOS調(diào)起微信支付顯示系統(tǒng)繁忙問(wèn)題

    解決iOS調(diào)起微信支付顯示系統(tǒng)繁忙問(wèn)題

    這篇文章主要介紹了解決iOS調(diào)起微信支付顯示系統(tǒng)繁忙問(wèn)題,需要的朋友可以參考下
    2016-12-12
  • 分享一個(gè)iOS下實(shí)現(xiàn)基本繪畫板功能的簡(jiǎn)單方法

    分享一個(gè)iOS下實(shí)現(xiàn)基本繪畫板功能的簡(jiǎn)單方法

    這篇文章主要介紹了iOS下實(shí)現(xiàn)基本繪畫板功能的簡(jiǎn)單方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-10-10
  • iOS通過(guò)逆向理解Block的內(nèi)存模型

    iOS通過(guò)逆向理解Block的內(nèi)存模型

    自從對(duì) iOS 的逆向初窺門徑后,我也經(jīng)常通過(guò)它來(lái)分析一些比較大的應(yīng)用,參考一下這些應(yīng)用中某些功能的實(shí)現(xiàn)。這個(gè)探索的過(guò)程樂(lè)趣多多,不僅能滿足自己對(duì)未知的好奇心,還經(jīng)常能發(fā)現(xiàn)一些意外的驚喜。這篇文章主要介紹了iOS通過(guò)逆向如何深入理解Block內(nèi)存模型的相關(guān)資料。
    2017-01-01
  • iOS 防止按鈕多次點(diǎn)擊造成多次響應(yīng)的方法

    iOS 防止按鈕多次點(diǎn)擊造成多次響應(yīng)的方法

    這篇文章主要介紹了iOS 防止按鈕多次點(diǎn)擊造成多次響應(yīng)的方法的相關(guān)資料,這里對(duì)多次點(diǎn)擊造成的響應(yīng)提供了解決辦法,需要的朋友可以參考下
    2016-11-11
  • iOS開發(fā)UICollectionView實(shí)現(xiàn)拖拽效果

    iOS開發(fā)UICollectionView實(shí)現(xiàn)拖拽效果

    這篇文章主要為大家詳細(xì)介紹了iOS開發(fā)UICollectionView實(shí)現(xiàn)拖拽效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • iOS離屏渲染過(guò)程示例解析

    iOS離屏渲染過(guò)程示例解析

    這篇文章主要為大家介紹了iOS離屏渲染過(guò)程示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • iOS自定義鍵盤切換效果

    iOS自定義鍵盤切換效果

    這篇文章主要為大家詳細(xì)介紹了iOS自定義鍵盤切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • NSString屬性何時(shí)用strong何時(shí)用copy?

    NSString屬性何時(shí)用strong何時(shí)用copy?

    相信各位iOS開發(fā)者們都考慮過(guò)這個(gè)問(wèn)題,平時(shí)寫NSString的屬性時(shí)都用copy,那strong要何時(shí)用呢?下面這篇文章就來(lái)看一下什么時(shí)候應(yīng)該用copy,什么時(shí)候應(yīng)該用strong。有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12

最新評(píng)論

海伦市| 克什克腾旗| 探索| 辽宁省| 海城市| 滦平县| 措勤县| 通州区| 汾阳市| 梁山县| 惠来县| 花垣县| 图片| 万载县| 临桂县| 满城县| 金阳县| 灌南县| 郑州市| 三台县| 长岛县| 额尔古纳市| 四子王旗| 和平县| 南华县| 宜宾县| 察隅县| 潞西市| 西乡县| 绍兴县| 巩义市| 民权县| 红原县| 潮州市| 禹城市| 贵港市| 湛江市| 安陆市| 修水县| 呼玛县| 长治市|