Sha256: 42225fb390e9e3f079f7b2c9e6766e602b95e5a2e1cac80d95bf912cb4122efd
Contents?: true
Size: 1.45 KB
Versions: 2
Compression:
Stored size: 1.45 KB
Contents
# frozen_string_literal: true # Паттерн Наблюдатель (Observer) - это поведенческий паттерн проектирования, # который позволяет объектам следить и реагировать на изменения состояния других объектов. # Наблюдаемый объект class Observable attr_reader :observers def initialize @observers = [] end def add_observer(observer) @observers << observer end def remove_observer(observer) @observers.delete(observer) end def notify_observers @observers.each { |observer| observer.update(self) } end def do_something puts "Наблюдаемый объект: сделал что-то!" notify_observers end end # Наблюдатель class Observer def update(observable) puts "Наблюдатель: получил оповещение от #{observable.class.name}" end end # Пример использования observable = Observable.new observer = Observer.new observable.add_observer(observer) observable.do_something # Вывод: # Наблюдаемый объект: сделал что-то! # Наблюдатель: получил оповещение от Observable observable.remove_observer(observer) observable.do_something # Вывод: # Наблюдаемый объект: сделал что-то!
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
shanti555890-1.1.5 | lib/source/database/observer.rb |
shanti555890-1.1.4 | lib/source/database/observer.rb |