设计原理
基本原理
- 抽象
- 模块化
- 隐蔽性
- 模块独立
内聚
以下顺序从低到高:
- 偶然内聚:无直接关系
- 逻辑内聚:逻辑相似,参数决定,函数复用
- 时间内聚:同时执行,能同步,不异步
- 过程内聚:过程顺序相同
- 通信内聚:数据结构相同,输入输出相同
- 顺序内聚:顺序执行,输入为输出
- 功能内聚:共同作用,缺一不可
耦合
- 无直接耦合:无直接关系
- 数据耦合:值传递调用
- 标记耦合:传递结构体
- 控制耦合:控制变量,选择执行功能
- 外部耦合:软件外部环境
- 公共耦合:公共数据结构体
- 内容耦合:模块内部关联
面向对象
基本定义
- 类
- 实体类:有数据有行为,实际对象建模的类
- 边界类:系统间尽心交互建模的类
- 控制类:对控制行为进行建模的类,比如异常
- 多态
- 参数多态:不同类型参数,含义不同。比如to_string();
- 包含多态:父子类型关系
- 过载多态:一个名字不同含义
- 强制多态:强制类型转换
- 覆盖:子类实现与父类同名同参函数,是覆盖父类方法
- 函数重载:同名不同参
- 静态绑定与动态绑定:静态,有编译时绑定,动态运行时绑定
面向对象分析
- 五个活动:认定对象,对象抽象,描述对象间关系,确定对象间操作,定义对象内部属性
- 设计与程序设计:设计分为设计分析和程序设计(代码实现)
- 测试:算法层(函数测试),类层(类测试),模板层(模块测试),系统层(整体测试)
UML
三个基本构造块:事务,关系,图
事务
结构事务
行为事务
分组事务和注释事务
关系
三级石:三角形,实线—继承,虚线—实现
见关一:箭头,实线—关联,虚线—依赖
零足距:菱形,实心—组合,空心—聚集
图
类图
静态图,可以展现,多重度(类的N对N关系),属性,操作,关系
对象图
静态图,类图的一个快照,类被实力化为对象
用例图
描述参与者的一系列操作,用例(操作)之间的关系:包含(子操作),扩展(关联),泛化(抽象)
序列图
活动图
构件图
23个设计模式
创建型
- 抽象工厂:抽象接口
- 构建器:类与构造分离
- 工厂:子类决定实例化
- 原型:原型实例,拷贝,虚拟机的快照
- 单例:唯一实例
结构型
- 适配器(Adapter):转换,兼容接口
- 桥接(Bridge):抽象与实现分离
- 组合(Composite):整体-部分,树形结构
- 装饰(Decorator):附加职责
- 外观(Facade):对外统一接口
- 享元(Flyweight):细粒度,共享
- 代理:代理控制
行为型
- 职责链(Chain of Responsibility):传递请求、职责、链接(live555核心模式)
- 命令(Command):参数化、日志记录
- 解释器(Interpreter):文法、解释
- 迭代器(Iterator):顺序访问
- 中介(Mediator):不直接引用
- 备忘录(Memento):保存、恢复
- 观察者(Observer):通知、自动更新
- 状态(State):状态变类
- 策略(Strategy):算法替换
- 模板(Template):框架
- 访问者(Visitor):只读操作