国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

詳解組合模式的結(jié)構(gòu)及其在Ruby設(shè)計(jì)模式編程中的運(yùn)用

2019-10-26 19:28:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

定義:也叫合成模式,或者部分-整體模式,主要是用來(lái)描述部分與整體的關(guān)系,定義,將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。

類圖:

2016316161807337.jpg (431×346)

角色說(shuō)明:

Componnent抽象構(gòu)件角色:定義參加組合對(duì)象的共有方法和屬性,可以定義一些默認(rèn)的行為或?qū)傩浴?br />Leaf葉子構(gòu)件:葉子對(duì)象,其下再也沒有其他的分支,也就是遍歷的最小單位。
Composite樹枝構(gòu)件:樹枝對(duì)象,它的作用是組合樹枝節(jié)點(diǎn)和葉子節(jié)點(diǎn)形成一個(gè)樹形結(jié)構(gòu)。

實(shí)例:
聽說(shuō)你們公司最近新推出了一款電子書閱讀應(yīng)用,市場(chǎng)反應(yīng)很不錯(cuò),應(yīng)用里還有圖書商城,用戶可以在其中隨意選購(gòu)自己喜歡的書籍。你們公司也是對(duì)此項(xiàng)目高度重視,加大了投入力度,決定給此應(yīng)用再增加點(diǎn)功能。
好吧,你也知道你是逃不過(guò)此劫了,沒過(guò)多久你的leader就找到了你。他告訴你目前的應(yīng)用對(duì)每本書的瀏覽量和銷售量做了統(tǒng)計(jì),但現(xiàn)在想增加對(duì)每個(gè)書籍分類的瀏覽量和銷售量以及所有書籍總的瀏覽量和銷售量做統(tǒng)計(jì)的功能,希望你可以來(lái)完成這項(xiàng)功能。
領(lǐng)導(dǎo)安排的工作當(dāng)然是推脫不掉的,你只能硬著頭皮上了,不過(guò)好在這個(gè)功能看起來(lái)也不怎么復(fù)雜。
你比較喜歡看小說(shuō),那么就從小說(shuō)類的統(tǒng)計(jì)功能開始做起吧。首先通過(guò)get_all_novels方法可以獲取到所有的小說(shuō)名,然后將小說(shuō)名傳入get_browse_count方法可以得到該書的瀏覽量,將小說(shuō)名傳入get_sale_count方法可以得到該書的銷售量。你目前只有這幾個(gè)已知的API可以使用,那么開始動(dòng)手吧!

def get_novels_browse_count   browse_count = 0   all_novels = get_all_novels()   all_novels.each do |novel|     browse_count += get_browse_count(novel)   end   browse_count end  def get_novels_sale_count   sale_count = 0   all_novels = get_all_novels()   all_novels.each do |novel|     sale_count += get_browse_count(novel)   end   sale_count end 

很快你就寫下了以上兩個(gè)方法,這兩個(gè)方法都是通過(guò)獲取到所有的小說(shuō)名,然后一一計(jì)算每本小說(shuō)的瀏覽量和銷售量,最后將結(jié)果相加得到總量。
小說(shuō)類的統(tǒng)計(jì)就完成了,然后你開始做計(jì)算機(jī)類書籍的統(tǒng)計(jì)功能,代碼如下所示:

def get_computer_books_browse_count   browse_count = 0   all_computer_books = get_all_computer_books()   all_computer_books.each do |computer_book|     browse_count += get_browse_count(computer_book)   end   browse_count end  def get_computer_books_sale_count   sale_count = 0   all_computer_books = get_all_computer_books()   all_computer_books.each do |computer_book|     sale_count += get_browse_count(computer_book)   end   sale_count end             
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗田县| 永顺县| 新绛县| 廉江市| 突泉县| 武功县| 施甸县| 沭阳县| 繁峙县| 双流县| 临城县| 柳州市| 缙云县| 衡阳县| 凯里市| 哈巴河县| 五指山市| 平远县| 宜都市| 左贡县| 青海省| 武乡县| 裕民县| 耒阳市| 桦川县| 乐东| 遂川县| 淮南市| 屏山县| 浦东新区| 江陵县| 遵义县| 沧源| 成安县| 闽侯县| 白山市| 洛浦县| 隆昌县| 凤城市| 成武县| 石泉县|