Skip to content

Instantly share code, notes, and snippets.

@asterite
Created February 5, 2015 20:54
Show Gist options
  • Save asterite/057cf2a6ef73e85015ba to your computer and use it in GitHub Desktop.
Save asterite/057cf2a6ef73e85015ba to your computer and use it in GitHub Desktop.
module NumObserver
abstract def on_num(num)
end
module NumObservable
def add_observer(observer : NumObserver)
num_observers = @num_observers ||= [] of NumObserver
num_observers << observer
end
def notify_on_num(num)
@num_observers.try &.each &.on_num(num)
end
end
class Foo
include NumObservable
end
class Bar
include NumObserver
def on_num(num)
puts self
puts num
end
end
foo = Foo.new
foo.add_observer(Bar.new)
foo.add_observer(Bar.new)
foo.notify_on_num 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment