欢迎来到天天文库
浏览记录
ID:31192067
大小:72.00 KB
页数:3页
时间:2019-01-07
《ruby使用设计模式中的代理模式与装饰模式的代码实例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Ruby使用设计模式中的代理模式与装饰模式的代码实例这篇文章主要介绍了Ruby使用设计模式中的代理模式与装饰模式的代码实例,代理模式与装饰模式都可以归类为结构型的设计模式,需要的朋友可以参考下代理模式需求:小明让小李替他追小丽(送洋娃娃,送花,送巧克力)没有代理的代码:#encoding:utf-8#追求者淡classPursuitattr_accessor:mmdefinitialize(mm)@mm=mmenddefgive_dollsputs”#{mm.name}送你》羊娃娃”enddefgive_flowersputsH#{mm.name}送你鲜花”enddefgive_c
2、hocolateputs"#{mm.name}送你巧克力”endend#被追求者类classGirlattr_accessor:namedefinitialize(name)@name=nameendendxiao_hong=Girl.new('小红')xiao_ming=Pursuit.new(xiao_hong)xiao_ming.give_dollsxiao_ming.give_flowersxiao_ming.give_www.visal58.comcolate只有代理的代码:#encoding:utf-8删弋理类classProxyattr_accessor:mmdefi
3、nitialize(mm)@mm=mmenddefgive_dollsputs'^{mm.name}送你洋娃娃”enddefgive_flowersputs”#{mm.name}送你鲜花”enddefgive_chocolateputs"#{mm.name}送你巧克力"endend#被追求者类classGirlattr_accessor:namedefinitialize(name)@name=nameendendxiao_hong=Girl.new('小红')xiao_ming=Proxy.new(xiao_hong)xiao_ming.give_dollsxiao_ming.g
4、ive_flowersxiao_ming.give_chocolate只是把追求者类换成了代理类。实际的代理模式代码:#encoding:utf-8-*-#公共接口modulemoduleGiveGiftdefgive_dollsenddefgive_flowersenddefgive_chocolateendend#追习《者类classPursuitineludeGiveGiftattr_accessor:mm,:namedefinitialize(mm)@mm=mmenddefgive_dollsputsH#{mm.name}替#{name}送你洋娃娃"enddefgive_f
5、lowersputsH#{mm.name}^#{name}送你鲜花"enddefgive_chocolateputs”#{mm.name}替#{name}送你巧克力”endend#K理类classProxyineludeGiveG讦tattr_accessor:ggdefinitialize(mm)@gg=Pursuit.new(mm)enddefgive_dollsgg.give_dollsenddefgive_flowersgg.give_flowersenddefgive_chocolategg.give_chocolateendend#被追求者类classGirlattr_
6、accessor:namedefinitialize(name)@name=nameendendxiao_hong=Girl.new('小红*)xiao_ming=Proxy.new(xiao_hong)xiao_ming・gg.name,xiao_ming.give_dollsxiao_ming.give_flowersxiao_ming.give_chocolate装饰模式需求:给人搭配不同的服饰代码版本一#encoding:utf-8classPersonattr_accessor:namedefinitialize(name)@name=nameenddefwear_t_s
7、hirtsputs"人T恤'enddefwear_big_trouserputs'垮裤”enddefwear_sneakersputs'破球鞋'enddefwear_suitputs'卩耳装'enddefwear_tieputs'领带,enddefwear_leather_shoesputs,皮鞋,enddefshowputs"*****装扮的#{name}"endendxc=Person.new('小菜')puts"******第一种装扮Hxc.wear_t
此文档下载收益归作者所有