利用观察者模式与时俱进
在软件开发中,构建高度集成的系统是一项极具挑战性的任务。高度集成的系统意味着系统的每个部分都能感知到整体的状态。例如,在电子表格中,编辑一个单元格的内容不仅会改变网格中的数字,还会改变列的总计、修改柱状图中某条柱子的高度,并启用保存按钮。再比如,人事系统需要在员工工资发生变化时通知薪资部门。
构建这样的系统本身就很困难,若再加上系统可维护性的要求,难度就更大了。我们如何在不增加类之间耦合度的情况下,将大型软件系统的各个不同部分连接起来,避免整个系统变得混乱不堪呢?如何构建一个电子表格,使其能正确显示数据的变化,而无需在电子表格编辑代码和柱状图渲染器之间硬编码链接呢?如何让员工对象在不与薪资系统纠缠的情况下传播工资变化的消息呢?
保持消息灵通
解决这个问题的一种方法是关注这样一个事实:电子表格单元格和员工对象都可以作为消息源。当员工 Fred 获得加薪时,他的员工记录会向外界(至少是那些感兴趣的对象)宣布:“嘿!这里有情况发生了!”任何对 Fred 财务状况感兴趣的对象只需提前在他的员工对象上注册。一旦注册,该对象就会及时收到关于 Fred 工资涨跌的更新信息。
以下是一个基本的员工对象代码示例,它没有包含向外界通知的代码,只是负责记录员工信息:
class Employee
attr_reader :name
attr_accessor :title, :salary
def initialize( name, title, salary )
@name = name
@title = title
@salary = s
超级会员免费看
订阅专栏 解锁全文
101

被折叠的 条评论
为什么被折叠?



