class ObserverPattern < Team
# the observer role
class Observer
expected :update
end
# the observable role
class Observable
attr :observer
def initialize()
@observer = Array.new
end
def addObserver(observer)
print "add observer: #{observer.class.name}\n"
@observer.push(observer)
end
def removeObserver(observer)
@observer.delete(observer)
end
def notify()
@observer.each { |o|
o.update(self)
}
end
end
end