在底层语言的使用很多的一个callback机制,是将调用的发送者和调用执行者。
在面向对象设计中,command模式是callback的替代者。
command模式:将请求封装成为一个对象,这个对象在执行者那里展现出统一的接口。
class Command
def execute
raise NotImplementedError
end
end
class LightOnCommand < Command
def execute
puts "light on!"
end
end
class CommandReciever
def initialize
@cmds=[]
end
def register cmd
@cmds<< cmd
end
def execute_command pos
case pos/@cmds.length
when 0 : @cmds[pos].execute
else puts "Unknown Command position ##{1}"
end
end
end
rcv = CommandReciever.new
rcv.register LightOnCommand.new
rcv.execute_command 0
rcv.execute_command 1