观察者模式(Observer)

名字: 观察者模式(Observer)
别名: 别依赖(Dependents)、发布-订阅(Publish-Subscribe)
意图: 定义对象间的一种一对多的依赖关系,当[b]一个对象的状态发生[/b]改变时, 所有[b]依赖于它的对象都将得到通知并自动更新[/b].
动机: 将一个系统分割成一系列相互协作的类有一个常见的副作用,需要维护相关对象间的一致性.我们不希望为了维持一致性而使各类紧密耦合,因为这样降低了他们的可重用性.


module OberserPattern
def initialize
@observers = []
end

def add_observer(observer)
@observers << observer
end

def delete_observer(observer)
@observers.delete(observer)
end

def notify_observers
@observers.each do |observer|
observer.update(self)
end
end
end

class Informer
include OberserPattern
attr_accessor :name

def initialize(name)
super()
self.name = name
end

def meet
puts "#{name}说: 区安排学习十七大四中会议, 必须参加, 你通知 robin"
notify_observers
end
end

class Person
attr_accessor :name

def initialize(name)
self.name = name
end

def update(informer)
puts "robin, 区安排学习十七大四中会议"
puts "#{informer.name}说我们必须参加, 那我们去报到就回来"
end
end

jin = Informer.new('jin')
zheng = Person.new("Zheng")
jin.add_observer(zheng)
jin.meet



[img]http://dl.iteye.com/upload/attachment/172606/eabd1fdd-b3a7-3cc4-8b67-fe164b4a44af.jpg[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值