ruby delegate pattern
744 ワード
##
#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