0%

9.设计模式

设计原理

基本原理

  • 抽象
  • 模块化
  • 隐蔽性
  • 模块独立

内聚

以下顺序从低到高:

  • 偶然内聚:无直接关系
  • 逻辑内聚:逻辑相似,参数决定,函数复用
  • 时间内聚:同时执行,能同步,不异步
  • 过程内聚:过程顺序相同
  • 通信内聚:数据结构相同,输入输出相同
  • 顺序内聚:顺序执行,输入为输出
  • 功能内聚:共同作用,缺一不可

耦合

  • 无直接耦合:无直接关系
  • 数据耦合:值传递调用
  • 标记耦合:传递结构体
  • 控制耦合:控制变量,选择执行功能
  • 外部耦合:软件外部环境
  • 公共耦合:公共数据结构体
  • 内容耦合:模块内部关联

面向对象

基本定义

    • 实体类:有数据有行为,实际对象建模的类
    • 边界类:系统间尽心交互建模的类
    • 控制类:对控制行为进行建模的类,比如异常
  • 多态
    • 参数多态:不同类型参数,含义不同。比如to_string();
    • 包含多态:父子类型关系
    • 过载多态:一个名字不同含义
    • 强制多态:强制类型转换
  • 覆盖:子类实现与父类同名同参函数,是覆盖父类方法
  • 函数重载:同名不同参
  • 静态绑定与动态绑定:静态,有编译时绑定,动态运行时绑定

面向对象分析

  • 五个活动:认定对象,对象抽象,描述对象间关系,确定对象间操作,定义对象内部属性
  • 设计与程序设计:设计分为设计分析和程序设计(代码实现)
  • 测试:算法层(函数测试),类层(类测试),模板层(模块测试),系统层(整体测试)

UML

三个基本构造块:事务,关系,图

事务

结构事务

image-20210519004705037

行为事务

image-20210519005301577

分组事务和注释事务

image-20210519005316952

关系

三级石:三角形,实线—继承,虚线—实现

见关一:箭头,实线—关联,虚线—依赖

零足距:菱形,实心—组合,空心—聚集

类图

​ 静态图,可以展现,多重度(类的N对N关系),属性,操作,关系

image-20210519011155477

对象图

​ 静态图,类图的一个快照,类被实力化为对象

image-20210519011054565

用例图

​ 描述参与者的一系列操作,用例(操作)之间的关系:包含(子操作),扩展(关联),泛化(抽象)

image-20210519011740798

序列图

活动图

image-20210521011025091

构件图

image-20210521011219890

23个设计模式

创建型

  • 抽象工厂:抽象接口
  • 构建器:类与构造分离
  • 工厂:子类决定实例化
  • 原型:原型实例,拷贝,虚拟机的快照
  • 单例:唯一实例

结构型

  • 适配器(Adapter):转换,兼容接口
  • 桥接(Bridge):抽象与实现分离
  • 组合(Composite):整体-部分,树形结构
  • 装饰(Decorator):附加职责
  • 外观(Facade):对外统一接口
  • 享元(Flyweight):细粒度,共享
  • 代理:代理控制

行为型

  • 职责链(Chain of Responsibility):传递请求、职责、链接(live555核心模式)
  • 命令(Command):参数化、日志记录
  • 解释器(Interpreter):文法、解释
  • 迭代器(Iterator):顺序访问
  • 中介(Mediator):不直接引用
  • 备忘录(Memento):保存、恢复
  • 观察者(Observer):通知、自动更新
  • 状态(State):状态变类
  • 策略(Strategy):算法替换
  • 模板(Template):框架
  • 访问者(Visitor):只读操作