导图社区 软件构建中的设计
代码大全2第5章节:软件构建中的设计
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
软件构建中的设计
设计中的挑战
设计是一个险恶的问题
只有通过解决或部分解决才能被明确的问题
设计是个了无章法的过程
设计就是确定取舍和调整顺序的过程
设计受到诸多限制
设计是不确定的
设计是一个启发式过程
设计是自然而然形成的
关键的设计概念
软件的首要技术使命:管理复杂度
偶然的难题和本质的难题
偶 然 的 (accidental) 属 性 则 是 指 一 件 事 物 碰 巧 具 有 的 属 性
软件开发中大部分的偶然性难题在很久以前就已得到解决了
本质性的困难
面对复杂、无序的现实世界
精确而完整地识别出各种依赖关系与例外情况
设计出完全正确而不是大致正确的解决方案
管理复杂度的重要性
管理复杂度是软件开发中最为重要的技术话题
通 过 把 整 个 系 统 分 解 为 多 个 子 系 统 来 降 低 问 题 的 复 杂 度
保 持 子 程 序 的 短 小 精 悍 也 能 帮 助 你 减 少 思 考 的 负 担
如何应对复杂度
理想的设计特征
最 小 的 复 杂 度
易 于 维 护
松 散 辑 合
可 扩 展 性
可 重 用 性
高 扇 入
低扇出
可 移 植 性
精简性
层 次 性
标 准 技 术
设计的层次
第 1 层 : 软 件 系 统
第 2 层 : 分 解 为 子 系 统 或 包
第 3 层 :分解为类
设计包括识别出系统中所有的类
第 4 层 :分解成子程序
把每个类细分为子程序
第 5 层 :子程序内部的设计
在子程序层次上进行设计就是为每个子程序布置详细的功能
设计构造块 :启发式方法
找出现实世界中的对象
辨识对象及其属性(方 法 (method) 和 数 据 (data) )
确定可以对各个对象进行的操作
确定各个对象能对其他对象进行的操作
确定对象的哪些部分对其他对象可见
定义每个对象的公开接口
形成一致的抽象
抽象是一种能让你在关注某一概念的同时可以放心地忽略其中一些细节的能力
基类也是一种抽象,它使你能集中精力关注一组派生类所具有的共同特性
以复杂度的观点看,抽象的主要好处就在于它使你能忽略无关的细节
封装实现细节
封装:除此之外,你不能看到对象的任何其他细节层次
封装帮助你管理复杂度的方法是不让你看到那些复杂度
当继承能简化设计时就继承
继承的好处在于它能很好地辅佐抽象的概念
继承能简化编程的工作
隐藏秘密
强 调的 就 是 隐 藏 复 杂 度
每 个 类 (或 者 包 和 子 程 序 )都 代 表 了 某 种 对 其 他 类 保 密 的 设 计 或 构 建 决 策
类的接口应该尽可能少地暴露其内部工作机制
隐 藏 复 杂 度
隐 藏 变 化 源
信息隐藏的障碍
信息过度分散
循 环 依 赖
把 类 内 数 据 误 认 为 全 局 数 据
可以察觉的性能损耗
找出容易改变的区域
找出看起来容易变化的项目
把容易变化的项目分离
把看起来容易变化的项目隔离
容易变化的区域
业务规则
对 硬 件 的 依 赖
输 入 和 输 出
非 标 准 的 语 言 特
困 难 的 设 计 区 域 和 构 建 区
状态变量
数 据 量 的 限
保持松散耦合
耦合标准
规模
对于耦合度来说,小就是美
可见性
可见性指的是两个模块之间的连接的显著程度
活性指的是模块之间的连接是否容易改动
耦合的种类
简 单 数 据 参 数 賴 合
简 单 对 象 稱 合
对 象 参 数 親 合
语义上的耦合
常用的设计模式
抽 象 工 厂
通 过 指 定 对 象 组 的 种 类 而 非 单 个 对 象 的 类 型 来 支 持 创 建 一 组 相 关 的 对 象
适 配 器
把 一 个 类 的 接 口 转 变 成 为 另 一 个 接 口
桥 接
把>接 口 和 实 现 分 离 开 来 ,使 它 们 可 以 独 立 地 变 化
组合
创 建 一 个 包 含 其 他 同 类 对 象 的 对 象 ,使 得 客 户 代 码 可 以 与 最 上 层 对 象 交 互 而 无 须 考 虑 所 有 的 细 节 对 象
装 饰 器
给 一 个 对 象 动 态 地 添 加 职 责 , 而 无 须 为 了 每 一 种 可 能 的 职 责 配 置 情 况 去 创 建 特 定 的 子 类 (派 生 类
外 观
为 没 有 提 供 一 致 接 口 的 代 码 提 供 一 个 一 致 的 接 口
迭 代 器
提 供 一 个 服 务 对 象 来 顺 序 地 访 问 一 组 元 素 中 的 各 个 元 素
观 察 者
使 一 组 相 关 对 象 相 互 同 步 , 方 法 是 让 另 一 个 对 象 负 责 •. Observer (观 察 者 ) 在 这 组 对 象 中 的 任 何 一 个 发 生 改 变 时 , 由 它 把 这 种 变 化 通 知 给 这 个 组 里 的 所 有 对 象
单 件
为 有 且 仅 有 一 个 实 例 的 类 提 供 一 种 全 局 访 问 功 能
策 略
定 义 一 组 算 法 或 者 行 为 ,使 得 它 们 可 以 动 态 地 相 互 替 换题
模 板 方 法
定 义 一 个 操 作 的 算 法 结 构 ,但 是 把 部 分 实 现 的 细 节 留 给 子 类 (派 生 类 )
其他的启发式方法
高内聚性
构造分层结构
严格描述类契约
分配职贵
为测试而设计
避免失误
有意识地选择绑定时间
创建中央控制点
虑使用蛮力突破
画一个图
保持设计的模块化