首页 > 其他 > 详细

Ruby设计模式-观察者模式学习笔记

时间:2018-11-08 12:07:39      阅读:153      评论:0      收藏:0      [点我收藏+]
observer.rb
#!/bin/env ruby
# encoding: utf-8
require ‘observer‘

class
CriminalMovement include Observable attr_reader :criminal def initialize(criminal) @criminal = criminal end def action(msg) changed notify_observers(criminal, msg) end end class Criminal attr_reader :name def initialize(name) @name = name end end class FbiMovement attr_reader :fbi def initialize(fbi) @fbi = fbi end def update(criminal, msg) p criminal.name + msg + : + fbi.name + 收到 end end class Fbi attr_reader :name def initialize(name) @name = name end end # 卧底 class Dinting def self.run crmn1 = Criminal.new(黑狗) crmn2 = Criminal.new(黑虎) fbi1 = Fbi.new(飞鹰1号) fbi2 = Fbi.new(飞鹰2号) fbi1_observer = FbiMovement.new(fbi1) fbi2_observer = FbiMovement.new(fbi2) crinimal1_observer = CriminalMovement.new(crmn1) crinimal2_observer = CriminalMovement.new(crmn2) fbi_observers = [fbi1_observer, fbi2_observer] crinimal_observers = [crinimal1_observer, crinimal2_observer] fbi_observers.each do |fbi_o| crinimal_observers.each do |cri_o| cri_o.add_observer(fbi_o) end end crinimal1_observer.action(今天凌晨2点,南河小巷抢劫) crinimal2_observer.action(明天凌晨2点,爱河毒品交易) end end Dinting.run

程序运行结果:

"黑狗今天凌晨2点,南河小巷抢劫: 飞鹰1号收到"
"黑狗今天凌晨2点,南河小巷抢劫: 飞鹰2号收到"
"黑虎明天凌晨2点,爱河毒品交易: 飞鹰1号收到"
"黑虎明天凌晨2点,爱河毒品交易: 飞鹰2号收到"

Ruby设计模式-观察者模式学习笔记

原文:https://www.cnblogs.com/amanda-meng/p/9928233.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!