35、规格反转与缓存更新技术解析

规格反转与缓存更新技术解析

1. 规格与结果呈现

每个规格都有一组已知条件。特定的缓存、数据源或用户界面组件保存着针对特定已知事实集的规格结果。以用户界面组件为例,不同用户运行相同规格,但起始事实不同,因此视图也不同。在用户浏览界面时,会通过运行规格来渲染组件,许多组件运行相同规格,但起始事实各异。规格的起始点决定了要更新的用户界面组件,此逻辑同样适用于缓存和数据源。

2. 计算受影响集合
  • 简单示例 :当表格列表视图首次加载时,会运行线框中显示的规格,该规格决定列表中要显示的表格。同时,此规格也提供了计算任何后续分配受影响集合所需的所有信息。以下是相关规格代码:
tablesForServer = (s: Server) {
  a: Assignment [
    a→server = s
  ]
  t: Table [
    t = a→table
  ]
} ⇒ t.tableNumber

affectedServer = (a: Assignment) {
  s: Server [
    s = a→server
  ]
} ⇒ s

当有新的分配记录时,运行 affectedServer 规格可确定要更新的用户界面组件,仅更新从结果服务器开始的组件。
- 增加复杂度示例 :考虑餐厅安排顾客就座的模型,可编写如下规格来按服务员查找就座的顾客:

seatedParties = (s: Server) ⇒ {
  a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值