class Patterns::Subject

Subject -> Object

The object that will be observed.

Contains a list of observers that are watching this subject

Attributes

observers[R]

The list of observers this subject stores

Public Class Methods

new() click to toggle source

Initializes the subject class

Examples

=> subject = Subject.new
# File app/models/observer/subject.rb, line 17
def initialize
  @observers = Array.new
end

Public Instance Methods

add_observer(observer) click to toggle source

Adds an observer to the list of observers

  • observer - The observer to add to the list

Examples

=> subject_observer = Observer.new
=> subject.add_observer(subject_observer)
# File app/models/observer/subject.rb, line 29
def add_observer(observer)
  @observers << observer
end
notify(notification, event) click to toggle source

Notifies the observer of some change

  • notification - The notification to send to the observers

  • event - The event to send to the observers

Examples

=> subject.notify('An event just happened!', the_event)
# File app/models/observer/subject.rb, line 52
def notify(notification, event)
  @observers.each do |observer|
    observer.on_notify(notification, event)
  end
end
remove_observer(observer) click to toggle source

Removes an observer from the list of observers

  • observer - The observer to remove from the list

Examples

=> subject.remove_observer(subject_observer)
# File app/models/observer/subject.rb, line 40
def remove_observer(observer)
  @observers.delete(observer)
end