我试图找出一种方法,通过创建一个新的 Listener 类来让一个方法触发另一个方法。我真的很想简化代码,并且不涉及添加任何特定于回调方法或触发方法的内容。基本上,我想做的是:
def level_up
level += 1
end
def print_level
puts "Level Up! (#{level})"
end
notify_level = Listener.new(:level_up, :print_level);
我的 Listener 类(现在)是这样的:
# Listener.new(attached_to, callbacks)
class Listener
def initialize(attached_to, function)
@owner, @callback = attached_to, function
end
def owner
@owner
end
def callback
@callback
end
def trigger
# execute callback manually
self.method(@owner).call
self.method(@callback).call
end
end
为了调用两者,我需要执行notify_level.trigger
自己,但我想要的是执行level_up
和调用print_level
. 我知道有人会提到一些关于观察者的事情,但我需要的不仅仅是这些。我想坚持干。为每个方法手动添加观察者和侦听器真是太糟糕了,尤其是因为我无法轻松添加或删除它们。