Skip to content

Commit

Permalink
add ruby version singleton pattern
Browse files Browse the repository at this point in the history
  • Loading branch information
oxnz committed Feb 12, 2014
1 parent 598fdf8 commit 82b574e
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/observer/ruby/car.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
require 'observer'

class Notifier
def update(car, miles)
puts "The car has logged #{miles} miles, totaling #{car.mileage} miles traveled."
puts "The car needs to be taken in for a service!" if car.service \
< car.mileage
end
end

class Car
include Observable
attr_reader :mileage, :service

def initialize(mileage = 0, service = 3000)
@mileage, @service = mileage, service
add_observer(Notifier.new)
end

def log(miles)
@mileage += miles
changed
notify_observers(self, miles)
end
end

car = Car.new(2300, 3000)
car.log(100)
car.log(354)
car.log(300)
9 changes: 9 additions & 0 deletions src/observer/ruby/notifier.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Notifier
def update(car, miles)
puts "The car has logged #{miles} miles, totaling #{car.mileage}
miles traveled."
puts "The car needs to be taken in for a service!" if car.service
&< car.mileage
&amp;lt;= car.mileage
end
end
3 changes: 3 additions & 0 deletions src/observer/ruby/test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env ruby

require 'Car'

0 comments on commit 82b574e

Please sign in to comment.