亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Ruby使用設計模式中的代理模式與裝飾模式的代碼實例

Ruby使用設計模式中的代理模式與裝飾模式的代碼實例

熱門標簽:電銷機器人廠商代理 湖州u友防封電銷卡 白銀外呼paas系統 常德電銷平臺外呼系統軟件價格 百度地圖標注自定義圖片 地圖標注賺錢項目注冊 高德地圖標注客服 徐州網絡外呼系統哪個好 滴滴外呼系統

代理模式

需求:

小明讓小李替他追小麗(送洋娃娃,送花,送巧克力)

沒有代理的代碼:

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

#追求者類
class Pursuit
 attr_accessor :mm
 
 def initialize(mm)
  @mm = mm
 end
 
 def give_dolls
  puts "#{mm.name} 送你洋娃娃"
 end
 
 def give_flowers
  puts "#{mm.name} 送你鮮花"
 end
 
 def give_chocolate
  puts "#{mm.name} 送你巧克力"
 end

end

#被追求者類
class Girl
 attr_accessor :name
 
 def initialize(name)
  @name = name
 end
end

xiao_hong = Girl.new('小紅')

xiao_ming = Pursuit.new(xiao_hong)
xiao_ming.give_dolls
xiao_ming.give_flowers
xiao_ming.give_chocolate

只有代理的代碼:

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

#代理類
class Proxy
 attr_accessor :mm
 
 def initialize(mm)
  @mm = mm
 end
 
 def give_dolls
  puts "#{mm.name} 送你洋娃娃"
 end
 
 def give_flowers
  puts "#{mm.name} 送你鮮花"
 end
 
 def give_chocolate
  puts "#{mm.name} 送你巧克力"
 end

end

#被追求者類
class Girl
 attr_accessor :name
 
 def initialize(name)
  @name = name
 end
end

xiao_hong = Girl.new('小紅')

xiao_ming = Proxy.new(xiao_hong)
xiao_ming.give_dolls
xiao_ming.give_flowers
xiao_ming.give_chocolate

只是把追求者類換成了代理類。

實際的代理模式代碼:

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

#公共接口module
module GiveGift
 def give_dolls
 end
 
 def give_flowers
 end
 
 def give_chocolate
 end
end

#追求者類
class Pursuit
 include GiveGift
 attr_accessor :mm, :name
 
 def initialize(mm)
  @mm = mm
 end
 
 def give_dolls
  puts "#{mm.name} 替#{name}送你洋娃娃"
 end
 
 def give_flowers
  puts "#{mm.name} 替#{name}送你鮮花"
 end
 
 def give_chocolate
  puts "#{mm.name} 替#{name}送你巧克力"
 end

end

#代理類
class Proxy
 include GiveGift
 attr_accessor :gg
 
 def initialize(mm)
  @gg = Pursuit.new(mm)
 end
 
 def give_dolls
  gg.give_dolls
 end
 
 def give_flowers
  gg.give_flowers
 end
 
 def give_chocolate
  gg.give_chocolate
 end

end

#被追求者類
class Girl
 attr_accessor :name
 
 def initialize(name)
  @name = name
 end
end

xiao_hong = Girl.new('小紅')

xiao_ming = Proxy.new(xiao_hong)
xiao_ming.gg.name = '小明'
xiao_ming.give_dolls
xiao_ming.give_flowers
xiao_ming.give_chocolate


裝飾模式
 
需求:

給人搭配不同的服飾

代碼版本一

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

class Person
 attr_accessor :name
 
 def initialize(name)
  @name = name
 end
 
 def wear_t_shirts
  puts '大T恤'
 end
 
 def wear_big_trouser
  puts '垮褲'
 end
 
 def wear_sneakers
  puts '破球鞋'
 end
 
 def wear_suit
  puts '西裝'
 end
 
 def wear_tie
  puts '領帶'
 end
 
 def wear_leather_shoes
  puts '皮鞋'
 end
 
 def show
  puts "*****裝扮的#{name}\n\n"
 end

end


xc=Person.new('小菜')
puts "******第一種裝扮"
xc.wear_t_shirts
xc.wear_big_trouser
xc.wear_sneakers
xc.show

puts "******第二種裝扮"
xc.wear_suit
xc.wear_tie
xc.wear_leather_shoes
xc.show

這樣寫的話,功能是實現了,問題是如果增加“超人”的裝扮,就要修改Person類,違反了開放-封閉原則。

 

代碼版本二

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

class Person
 attr_accessor :name
 
 def initialize(name)
  @name = name
 enddef show
  puts "*****裝扮的#{name}\n\n"
 end

end


class Finery
 def show
 end
end

class TShirts  Finery
 def show
  puts '大T恤'
 end
end

class BigTrouser  Finery
 def show
  puts '垮褲'
 end
end

class Sneakers  Finery
 def show
  puts '破球鞋'
 end
end

class Suit  Finery
 def show
  puts '西裝'
 end
end

class Tie  Finery
 def show
  puts '領帶'
 end
end


class LeatherShoes  Finery
 def show
  puts '皮鞋'
 end
end


xc=Person.new('小菜')
ts = TShirts.new
bt = BigTrouser.new
sk = Sneakers.new
puts "******第一種裝扮"
ts.show
bt.show
sk.show
xc.show


suit = Suit.new
tie = Tie.new
ls = LeatherShoes.new
puts "******第二種裝扮"
suit.show
tie.show
ls.show
xc.show

這樣改了之后,如果增加超人裝扮,確實不需要去修改Person類。存在的問題是,各種衣服是獨立的,并且暴露在外邊的,就是一件一件穿的,沒有順序,沒有控制。

代碼版本三

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

class Person
 attr_accessor :name
 
 def initialize(name=nil)
  @name = name
 end
 
 def show
  puts "*****裝扮的#{name}\n\n"
 end

end


class Finery  Person
 attr_accessor :componet

 def decorate(componet)
  @componet = componet
 end

 def show
  componet.show if componet
 end
end

class TShirts  Finery
 def show
  super
  puts '大T恤'
 end
end

class BigTrouser  Finery
 def show
  super
  puts '垮褲'
 end
end

class Sneakers  Finery
 def show
  super
  puts '破球鞋'
 end
end

class Suit  Finery
 def show
  super
  puts '西裝'
 end
end

class Tie  Finery
 def show
  super
  puts '領帶'
 end
end


class LeatherShoes  Finery
 def show
  super
  puts '皮鞋'
 end
end


xc=Person.new('小菜')
ts = TShirts.new
bt = BigTrouser.new
sk = Sneakers.new
puts "******第一種裝扮"
ts.decorate xc
bt.decorate ts
sk.decorate bt
sk.show


suit = Suit.new
tie = Tie.new
ls = LeatherShoes.new
puts "******第二種裝扮"
suit.decorate xc
tie.decorate suit
ls.decorate bt
ls.show

您可能感興趣的文章:
  • java 裝飾模式(Decorator Pattern)詳解及實例代碼
  • java 裝飾模式(Decorator Pattern)詳解
  • C# 設計模式系列教程-裝飾模式
  • 詳解java裝飾模式(Decorator Pattern)
  • Java設計模式之裝飾模式(Decorator模式)介紹
  • C++設計模式之裝飾模式
  • java設計模式之裝飾模式詳細介紹
  • php設計模式 Decorator(裝飾模式)
  • .NET簡單工廠模式講解
  • .NET裝飾模式講解

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

巨人網絡通訊聲明:本文標題《Ruby使用設計模式中的代理模式與裝飾模式的代碼實例》,本文關鍵詞  Ruby,使用,設計模式,中的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby使用設計模式中的代理模式與裝飾模式的代碼實例》相關的同類信息!
  • 本頁收集關于Ruby使用設計模式中的代理模式與裝飾模式的代碼實例的相關信息資訊供網民參考!
  • 推薦文章
    精品国产香蕉在线播出| 国产亚洲免费观看| 午夜激情视频在线播放| 黄视频网站免费观看| 四虎久久影院| 成人在免费观看视频国产| 日本伦理片网站| 一级毛片视频在线观看| 日韩男人天堂| 四虎论坛| 韩国三级视频在线观看| 日韩一级精品视频在线观看| 欧美激情一区二区三区在线播放| 日韩男人天堂| 国产一区二区福利久久| 日韩在线观看视频免费| 免费一级生活片| 99热精品一区| 日本免费看视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆精品国产综合久久久| 人人干人人草| 一级片片| 国产一区二区精品久久91| 久草免费在线观看| 国产国语对白一级毛片| 精品国产一区二区三区久| 国产高清视频免费| 黄色免费三级| 日本在线不卡免费视频一区| 成人影院久久久久久影院| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 青青久在线视频| 黄色短视频网站| 美女免费精品高清毛片在线视 | 人人干人人草| 欧美大片毛片aaa免费看| 精品视频免费在线| 亚洲女初尝黑人巨高清在线观看| 国产网站免费| 国产网站在线| 高清一级淫片a级中文字幕| 黄色免费网站在线| 九九精品在线| 成人免费观看网欧美片| 成人a大片在线观看| 天天做人人爱夜夜爽2020| 欧美另类videosbestsex视频| 麻豆网站在线免费观看| 国产不卡高清| 午夜在线影院| 精品视频免费看| 色综合久久手机在线| 欧美日本二区| 日本伦理片网站| 国产成人精品影视| 色综合久久天天综线观看| 99久久视频| 黄色福利| 欧美大片一区| 色综合久久天天综线观看| 国产a毛片| 精品国产香蕉在线播出| 日韩中文字幕在线观看视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 沈樵在线观看福利| 沈樵在线观看福利| 成人av在线播放| 国产福利免费观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产91素人搭讪系列天堂| 欧美激情一区二区三区在线播放| 99久久精品国产国产毛片| 国产成+人+综合+亚洲不卡| 久久99这里只有精品国产| 麻豆网站在线看| 九九免费高清在线观看视频| 日韩av成人| 99久久视频| 亚洲第一页色| 韩国毛片基地| 国产成人精品影视| 九九精品久久| 日韩一级黄色| 欧美a级大片| 日日日夜夜操| 精品视频一区二区三区免费| 韩国三级香港三级日本三级| 亚洲 欧美 91| 国产成人女人在线视频观看 | 韩国三级视频网站| 国产a网| 韩国妈妈的朋友在线播放| 欧美1卡一卡二卡三新区| 欧美大片a一级毛片视频| 一级片片| 精品久久久久久中文字幕一区| 欧美大片一区| 999久久久免费精品国产牛牛| 四虎影视久久| 日韩男人天堂| 欧美激情一区二区三区视频 | 国产一区二区精品| 国产麻豆精品hdvideoss| 欧美激情中文字幕一区二区| 美女免费毛片| 久久99欧美| 欧美电影免费看大全| 麻豆系列 在线视频| 成人影视在线观看| 日韩在线观看免费| 成人免费观看网欧美片| 精品国产三级a| 欧美一区二区三区性| 亚洲 激情| 国产视频在线免费观看| 日日日夜夜操| 毛片高清| 超级乱淫伦动漫| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 青青青草影院 | 成人av在线播放| 91麻豆国产| 欧美国产日韩一区二区三区| 成人高清免费| 久久成人亚洲| 日韩专区在线播放| 99久久精品国产片| 久久国产影视免费精品| 四虎久久影院| 天堂网中文字幕| 国产网站在线| 国产高清视频免费| 精品国产一区二区三区免费| 国产视频一区二区在线观看| 91麻豆tv| 高清一级做a爱过程不卡视频| 国产成a人片在线观看视频| 一级片片| 日韩一级精品视频在线观看| 久久精品免视看国产明星| 日日日夜夜操| 欧美激情一区二区三区在线 | 麻豆系列国产剧在线观看| 九九久久国产精品| 青青青草影院 | 91麻豆精品国产综合久久久| 四虎影视库国产精品一区| 国产一区二区精品久久91| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久久福利影视| 久久久久久久网| 可以免费在线看黄的网站| 日本在线播放一区| 一级毛片视频免费| 国产综合91天堂亚洲国产| 精品视频一区二区三区免费| 一级女人毛片人一女人| 成人免费网站视频ww| 欧美激情一区二区三区视频| 精品视频在线看| 免费的黄视频| 日韩男人天堂| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 亚洲第一视频在线播放| 国产网站免费| 色综合久久天天综合| 青草国产在线| 国产麻豆精品免费密入口| 国产精品1024永久免费视频| 亚洲天堂免费观看| 日韩免费在线观看视频| 麻豆网站在线看| 午夜激情视频在线观看| 亚洲天堂免费观看| 欧美一级视频高清片| 国产一区精品| 亚洲精品中文一区不卡| 九九久久99综合一区二区| 亚洲 男人 天堂| 欧美国产日韩一区二区三区| 久久国产影视免费精品| 国产不卡在线观看视频| 日韩免费片| 99热热久久| 成人免费网站久久久| 国产一区二区精品在线观看| 亚洲精品久久玖玖玖玖| 久久国产影视免费精品| 青青青草影院 | 国产高清视频免费观看| 国产一区二区精品久久91| 日韩中文字幕在线亚洲一区| 黄视频网站在线看| 久久国产精品永久免费网站| 一级女性全黄生活片免费| 国产一级生活片| 日韩av片免费播放| 国产网站免费视频| 你懂的福利视频|