国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Ruby - Ruby設計模式編程中使用Builder建造者模式的實例

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

2020-05-07 11:11范孝鵬 Ruby

這篇文章主要介紹了Ruby設計模式編程中使用Builder建造者模式的實例,建造者模式將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表示,需要的朋友可以參考下

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

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

初始代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- encoding: utf-8 -*-
 
#小人一
puts '這是第一個小人'
puts '小人一:頭'
puts '小人一:瘦身體'
puts '小人一:雙手'
puts '小人一:雙腳'
 
#小人二
puts '這是第二個小人'
puts '小人二:頭'
puts '小人二:胖身體'
puts '小人二:雙手'
puts '小人二:雙腳'

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

改進代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# -*- 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

延伸 · 閱讀

精彩推薦
  • RubyRuby環境下安裝使用bundler來管理多版本的gem

    Ruby環境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應用實例來進行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • RubyRuby簡潔學習筆記(一):字符串、數字、類和對象

    Ruby簡潔學習筆記(一):字符串、數字、類和對象

    這篇文章主要介紹了Ruby簡潔學習筆記(一):字符串、數字、類和對象,本文是學習筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • RubyCentOS中配置Ruby on Rails環境

    CentOS中配置Ruby on Rails環境

    經過一個上午的折騰,終于把ROR環境在CentOS中搞定,繞了很多彎路,把文章寫下來總結一下 ...

    可樂加糖4762020-04-12
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數,只有方法.而且實際上有不止一種方法.這一節我們介紹 訪問控制 (accesscontrols). 想想當我們在最高層而不是在一個類的定義里定義...

    ruby教程網3572020-04-08
  • RubyRuby設計模式編程中使用Builder建造者模式的實例

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

    這篇文章主要介紹了Ruby設計模式編程中使用Builder建造者模式的實例,建造者模式將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表...

    范孝鵬2192020-05-07
  • Ruby簡要說明Ruby中的迭代器

    簡要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動態語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • RubyRuby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼,數據是隨機的,所以每次的記錄都會不同。 ...

    ruby教程網2962020-04-10
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
主站蜘蛛池模板: 成人高清视频在线 | 久久久久国产精品免费免费搜索 | 欧美日韩精品一区二区在线观看 | 久久久久亚洲精品 | 中文字幕一区二区三区在线视频 | 亚洲区视频 | 国产高清视频一区二区 | 亚洲第1页 | 午夜日韩| 人人澡人人射 | 综合色综合 | 先锋影音男人 | 精精国产xxxx视频在线播放7 | 国产美女福利在线 | 精品视频免费在线 | 亚洲一区二区在线 | 欧美国产精品一区二区三区 | 91久久精品一区二区二区 | 日韩在线观看视频一区二区三区 | 午夜视频网 | 99久久婷婷国产精品综合 | 四季久久免费一区二区三区四区 | 国产高清在线 | 久久中文字幕一区二区三区 | 成人免费毛片嘿嘿连载视频 | 国产成人免费在线 | 国产综合区 | 久久高清 | 蜜桃精品在线观看 | 色网站在线 | 中文字幕一区二区在线观看 | 中文字幕网站 | 久久久久久国产 | 北条麻妃99精品青青久久 | 在线欧美亚洲 | 久久精品99久久 | 亚洲欧美日韩精品 | 国产乱轮 | 国产精品久久久久久久久久ktv | 插插射啊爱视频日a级 | 美日韩一区二区 |