国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 九江县| 大厂| 灵璧县| 开化县| 沈丘县| 东阳市| 大城县| 黔江区| 平罗县| 辛集市| 砀山县| 金沙县| 当阳市| 友谊县| 安顺市| 贵德县| 盖州市| 洪洞县| 格尔木市| 元朗区| 疏附县| 简阳市| 红原县| 永靖县| 安阳市| 辽源市| 扎赉特旗| 鄄城县| 秦安县| 镇原县| 电白县| 吉林省| 海口市| 安平县| 泰安市| 鹤岗市| 延安市| 无棣县| 襄汾县| 龙泉市| 海晏县|