规格反转与缓存更新技术解析
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
超级会员免费看
订阅专栏 解锁全文
54

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



