亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2016年03月16日 14:56:45   作者:范孝鵬  
這篇文章主要介紹了Ruby設(shè)計模式編程中使用Builder建造者模式的實例,建造者模式將一個復(fù)雜對象的構(gòu)造與它的表示分離,使同樣的構(gòu)建過程可以創(chuàng)建不同的表示,需要的朋友可以參考下

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

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

初始代碼:

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

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

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

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

改進代碼:

# -*- 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 '這是第一個小人'
p1 = PersionThinBuilder.new
pd1 = PersionDirect.new(p1)
pd1.create_persion

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


相關(guān)文章

最新評論