博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ruby设计模式-观察者模式学习笔记
阅读量:7123 次
发布时间:2019-06-28

本文共 1415 字,大约阅读时间需要 4 分钟。

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)  endendclass Criminal  attr_reader :name  def initialize(name)    @name = name  endendclass FbiMovement  attr_reader :fbi  def initialize(fbi)    @fbi = fbi  end  def update(criminal, msg)    p criminal.name + msg + ': ' + fbi.name + '收到'  endendclass Fbi  attr_reader :name  def initialize(name)    @name = name  endend# 卧底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点,爱河毒品交易')  endendDinting.run

程序运行结果:

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

转载于:https://www.cnblogs.com/amanda-meng/p/9928233.html

你可能感兴趣的文章
CAS 算法 —— Compare and Swap
查看>>
js实现在input框中动态添加图标
查看>>
element-ui配合vue分页
查看>>
控制语句执行流程
查看>>
解决Error: NJS-045错误 ubuntu环境配置Nodejs访问Oracle
查看>>
利用Nginx反向代理解决跨域问题
查看>>
一个图片偶尔加载不出来的事故
查看>>
vue.js起步
查看>>
TableStore实战:DLA+SQL实时分析TableStore
查看>>
【跃迁之路】【613天】程序员高效学习方法论探索系列(实验阶段370-2018.10.17)...
查看>>
Python:Tornado 第三章:HTML5 WebSocket概念及应用:第三节:客户端编程
查看>>
你用过不写代码就能完成一个简单模块的组件么?
查看>>
LeetCode 622——设计循环队列
查看>>
轻量级富文本编辑器wangEditor结合vue使用方法
查看>>
高程3总结#第10章DOM
查看>>
记一次Win10安装MySQL Server 5.7.20失败
查看>>
javascript对象原型成员详解
查看>>
vue进阶1-1 - 项目搭建(vue-cli)
查看>>
R语言与Tableau集成之可视化应用
查看>>
原来PHP对象比数组用更少的内存
查看>>