`

ruby delegate pattern

阅读更多
##
#delegate  方法介绍,用delegate使对象更灵活
class TickSeller
  def sell
    return 'Here is a ticket'
  end
end

#
class NoTickSeller
  def sell
    "Sorry-come back tomorrow"
  end
end

class TicketOffice < SimpleDelegator
  ##
  #程序初始化
  def initialize
    @seller = TickSeller.new
    @noseller = NoTickSeller.new
  end
  
  ##
  #置为是否可买
  def allow_sales(allow = true)
    __setobj__(allow ? @seller : @noseller)
    allow
  end

end


t = TicketOffice.new
t.allow_sales
p t.sell
t.allow_sales(false)
p t.sell
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics