Skip to content

Instantly share code, notes, and snippets.

@mjansen401
Last active December 11, 2015 10:39
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save mjansen401/4588620 to your computer and use it in GitHub Desktop.
Observer pattern example in Ruby, using stocks and stock tickers
class Stock
def initialize(symbol)
@symbol = symbol
@observers = []
end
def register_observer(observer)
@observers << observer
end
def remove_observer(observer)
@observers.delete(observer)
end
def notify
new_price = rand(500)
@observers.each do |observer|
observer.notify(@symbol, new_price)
end
end
end
class StockTicker
def notify(symbol, price)
puts "#{symbol}- #{price}"
end
end
class OldTimeyStockTicker
def notify(symbol, price)
puts "Ye old symbol and price - #{symbol}, #{price}"
end
end
## an example of using stocks and tickers as subjects and observers
stock = Stock.new("8L")
ticker = StockTicker.new
old_timey = OldTimeyStockTicker.new
stock.register_observer(ticker)
stock.register_observer(old_timey)
20.times do
stock.notify
sleep 0.3
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment