濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

熱門標(biāo)簽:地圖標(biāo)注賺錢項(xiàng)目注冊(cè) 滴滴外呼系統(tǒng) 徐州網(wǎng)絡(luò)外呼系統(tǒng)哪個(gè)好 湖州u友防封電銷卡 百度地圖標(biāo)注自定義圖片 高德地圖標(biāo)注客服 白銀外呼paas系統(tǒng) 電銷機(jī)器人廠商代理 常德電銷平臺(tái)外呼系統(tǒng)軟件價(jià)格

先來復(fù)習(xí)一下設(shè)計(jì)模式的基本概念:
定義
將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。
建造者隱藏了該產(chǎn)品是如何組裝的,所以若需要改變一個(gè)產(chǎn)品的內(nèi)部表示,只需要重新定一個(gè)建造者就可以了。
實(shí)用范圍
1.當(dāng)創(chuàng)建復(fù)雜對(duì)象的算法應(yīng)該獨(dú)立于該對(duì)象的組成部分以及它們的裝配方式時(shí)。
2.當(dāng)構(gòu)造過程必須允許被構(gòu)造的對(duì)象有不同表示時(shí)。
角色
在這樣的設(shè)計(jì)模式中,有以下幾個(gè)角色:
1.builder:為創(chuàng)建一個(gè)產(chǎn)品對(duì)象的各個(gè)部件指定抽象接口。
2.ConcreteBuilder:實(shí)現(xiàn)Builder的接口以構(gòu)造和裝配該產(chǎn)品的各個(gè)部件,定義并明確它所創(chuàng)建的表示,并 提供一個(gè)檢索產(chǎn)品的接口。
3.Director:構(gòu)造一個(gè)使用Builder接口的對(duì)象。
4.Product:表示被構(gòu)造的復(fù)雜對(duì)象。ConcreteBuilder創(chuàng)建該產(chǎn)品的內(nèi)部表示并定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產(chǎn)品的接口。
下面我們來看一個(gè)實(shí)例:
需求:

畫一個(gè)小人,有頭,有身體,兩手兩腳即可。

初始代碼:

# -*- encoding: utf-8 -*-

#小人一
puts '這是第一個(gè)小人'
puts '小人一:頭'
puts '小人一:瘦身體'
puts '小人一:雙手'
puts '小人一:雙腳'

#小人二
puts '這是第二個(gè)小人'
puts '小人二:頭'
puts '小人二:胖身體'
puts '小人二:雙手'
puts '小人二:雙腳'

問題:代碼重復(fù),而且容易出錯(cuò),缺胳膊少腿之類的。

改進(jìn)代碼:

# -*- encoding: utf-8 -*-

#
class PersionBuilder
  def head
    puts ''
  end
  def body
    puts ''
  end
  def arm
    puts ''
  end
  def leg
    puts ''
  end
end

#小人一
class PersionThinBuilder  PersionBuilder
  def head
    puts '頭'
  end
  def body
    puts '瘦身體'
  end
  def arm
    puts '雙手'
  end
  def leg
    puts '雙腳'
  end
end
#小人二
class PersionFatBuilder  PersionBuilder
  def head
    puts '頭'
  end
  def body
    puts '胖身體'
  end
  def arm
    puts '雙手'
  end
  def leg
    puts '雙腳'
  end
end

#指揮者類
class PersionDirect
  def initialize(persion)
    @persion = persion
  end
  
  def create_persion
    @persion.head
    @persion.body
    @persion.arm
    @persion.leg
  end

end
puts '這是第一個(gè)小人'
p1 = PersionThinBuilder.new
pd1 = PersionDirect.new(p1)
pd1.create_persion

puts '這是第二個(gè)小人'
p2 = PersionThinBuilder.new
pd2 = PersionDirect.new(p2)
pd2.create_persion


您可能感興趣的文章:
  • 設(shè)計(jì)模式中的觀察者模式在Ruby編程中的運(yùn)用實(shí)例解析
  • 實(shí)例解析Ruby設(shè)計(jì)模式開發(fā)中對(duì)觀察者模式的實(shí)現(xiàn)
  • 深入剖析Ruby設(shè)計(jì)模式編程中對(duì)命令模式的相關(guān)使用
  • Ruby設(shè)計(jì)模式編程中對(duì)外觀模式的應(yīng)用實(shí)例分析
  • 詳解組合模式的結(jié)構(gòu)及其在Ruby設(shè)計(jì)模式編程中的運(yùn)用
  • 設(shè)計(jì)模式中的模板方法模式在Ruby中的應(yīng)用實(shí)例兩則
  • 實(shí)例解析Ruby設(shè)計(jì)模式編程中Strategy策略模式的使用
  • 實(shí)例講解Ruby使用設(shè)計(jì)模式中的裝飾器模式的方法
  • 詳解Ruby設(shè)計(jì)模式編程中對(duì)單例模式的運(yùn)用
  • Ruby設(shè)計(jì)模式編程之適配器模式實(shí)戰(zhàn)攻略
  • Ruby使用設(shè)計(jì)模式中的代理模式與裝飾模式的代碼實(shí)例
  • Ruby中使用設(shè)計(jì)模式中的簡單工廠模式和工廠方法模式
  • 解析proxy代理模式在Ruby設(shè)計(jì)模式開發(fā)中的運(yùn)用

標(biāo)簽:永州 荊門 公主嶺 遼寧 梧州 三沙 普洱 張家界

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例》,本文關(guān)鍵詞  Ruby,設(shè)計(jì)模式,編程,中,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    舒兰市| 仙桃市| 霍邱县| 许昌市| 北宁市| 浮梁县| 墨脱县| 浦北县| 高碑店市| 巩留县| 视频| 南江县| 井陉县| 阳江市| 饶河县| 额敏县| 东山县| 乐都县| 即墨市| 屏南县| 永嘉县| 宣武区| 武隆县| 观塘区| 轮台县| 寻甸| 方山县| 盐边县| 泗水县| 明光市| 哈密市| 任丘市| 涡阳县| 七台河市| 本溪市| 盖州市| 怀柔区| 达拉特旗| 当阳市| 阿拉善左旗| 台东县|