9、利用观察者模式与时俱进

利用观察者模式与时俱进

在软件开发中,构建高度集成的系统是一项极具挑战性的任务。高度集成的系统意味着系统的每个部分都能感知到整体的状态。例如,在电子表格中,编辑一个单元格的内容不仅会改变网格中的数字,还会改变列的总计、修改柱状图中某条柱子的高度,并启用保存按钮。再比如,人事系统需要在员工工资发生变化时通知薪资部门。

构建这样的系统本身就很困难,若再加上系统可维护性的要求,难度就更大了。我们如何在不增加类之间耦合度的情况下,将大型软件系统的各个不同部分连接起来,避免整个系统变得混乱不堪呢?如何构建一个电子表格,使其能正确显示数据的变化,而无需在电子表格编辑代码和柱状图渲染器之间硬编码链接呢?如何让员工对象在不与薪资系统纠缠的情况下传播工资变化的消息呢?

保持消息灵通

解决这个问题的一种方法是关注这样一个事实:电子表格单元格和员工对象都可以作为消息源。当员工 Fred 获得加薪时,他的员工记录会向外界(至少是那些感兴趣的对象)宣布:“嘿!这里有情况发生了!”任何对 Fred 财务状况感兴趣的对象只需提前在他的员工对象上注册。一旦注册,该对象就会及时收到关于 Fred 工资涨跌的更新信息。

以下是一个基本的员工对象代码示例,它没有包含向外界通知的代码,只是负责记录员工信息:

class Employee
  attr_reader :name
  attr_accessor  :title, :salary

  def initialize( name, title, salary )
    @name = name
    @title = title
    @salary = s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值