架构与设计
引入
词汇
| English | 释义 | 拼音 |
|---|---|---|
| layers/ˈleɪəz/ | 分层 | fēn céng |
| dependency rule | 依赖规则 | yī lài guī zé |
| coupling | 耦合 | ǒu hé |
| cohesion/kəʊˈhiːʒn/ | 内聚 | nèi jù |
向内指的分层
- BookShare 三层:表示层(web 应用)、领域层(借阅、会员、目录)、存储层(数据库)。依赖规则 dependency rule:依赖一律向内——领域不识任何框架,这正是它可测的原因。

{exercise:uni-cs1202-layers}
练习
依赖规则指向——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
领域纯净才能脱离浏览器与数据库测试。
耦合与内聚,数着看
- 内聚 cohesion 让相关改动聚在一个模块;耦合 coupling 把改动摊开。借阅上限规则的改动:1 个模块、2 个文件;摊进表示层:3 层、5 个文件。计数本身就是设计度量。
- 借阅时序:表示层调
domain.borrow(member, copy);领域查限额与状态;存储带日期记账;表示层确认——四个参与者、五条带标消息。
{exercise:uni-cs1202-counting}
练习
借阅规则改动 1 模块 2 文件;摊开的版本碰——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
3 层 5 文件:计数即耦合度量。
边界的红利
- 提醒投递是
Notifier接口背后的策略:今天邮件、明天推送——换它一行配置、零领域改动。 - 领域 import web 框架即规则倒置、不可测试;无标注箭头的图只是装饰。
{exercise:uni-cs1202-boundary}
练习
换 Notifier 策略花——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
接口背后:边界买下替换。