中级软件设计师(软考)笔记——面向对象技术

面向对象技术

面向对象的基本概念

  • 对象:属性(数据)+ 方法(操作)+ 对象ID(唯一标识)
  • 类(实体类/控制类/边界类)
  • 继承于泛化:复用机制
  • 封装:隐藏对象的属性和实现细节, 仅对外公开接口
  • 多态:不同对象收到同样的消息产生不同的结果
  • 接口:一种特殊的类,他只有方法定义没有实现
  • 重载:一个类可以有多个同名参数类型不同的方法
  • 模板类
  • 消息和消息通信:消息是异步通信的

面向对象设计的7大原则

  • 单一职责原则:设计目的单一的类
  • 开放-封闭原则:对扩展开放,对修改封闭
  • 李氏替换原则:子类可以替换父类
  • 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
  • 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
  • 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
  • 迪米特原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解

UML(Unified Modeling Language)

统一建模语言

  • 结构图
    • 类图
    • 对象图
    • 包图*
    • 组合结构图*
    • 构件图
    • 部署图:软硬件之间映射
    • 制品图*
  • 行为图
    • 用例图:系统与外部参与者的交互
    • 顺序图:强调按时间顺序
    • 通信图(协作图)
    • 定时图*
    • 状态图
    • 活动图:类似程序流程图,并行行为
    • 交互概览图*

类图关系:

  • 依赖关系:一个事物发生变化影响另一个事物。
  • 泛化关系:特殊/一般关系
  • 关联关系:描述了一组链,链是对象之间的连接
  • 聚合关系:整体与部分生命周期不同
  • 组合关系:整体与部分生命周期相同
  • 实现关系:接口与类之间的关系

在这里插入图片描述

设计模式

  • 创建型模式
    • 工厂方法模式 (factory method)
    • 抽象工厂模式 (abstract factory)
    • 原型模式 (prototye)
    • 单例模式 (singleton)
    • 构建器模式 (builder)
  • 结构型模式
    • 适配器模式 (adapter)
    • 桥接模式 (bridge)
    • 组合模式 (composite)
    • 装饰模式 (decorator)
    • 外观模式 (facade)
    • 享元模式 (flyweight)
    • 代理模式 (proxy)
  • 行为型模式
    • 职责链模式 (chain of responsibility)
    • 命令模式 (command)
    • 解释器模式 (interpreter)
    • 迭代器模式 (iterator)
    • 中介者模式 (mediator)
    • 备忘录模式 (memento)
    • 观察者模式 (observer)
    • 状态模式 (state)
    • 策略模式 (strategy)
    • 模板方法模式 (template method)
    • 访问者模式 (visitor)

创建型模式

模式 简要说明 速记关键字
抽象工厂模式 (abstract factory) 提供了一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类 生产系列对象
构建器模式 (builder) 将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示 复杂对象构造
工厂方法模式 (factory method) 定义一个用于创建对象的接口,让子类决定将哪-个类实例化,使一个类的实例化延迟到其子类 动态生产对象
原型模式 (prototye) 用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象 克隆对象
单例模式 (singleton) 保证一个类只有一个实例,且能自行实例化,并向整个系统提供这个实例 单实例

结构性模式

模式 简要说明 速记关键字
适配器模式 (adapter) 将一个类的接口转换成客户想要的另一种接口,使原本不兼容的接口得以协同工作 转换接口
桥接模式 (bridge) 将类的抽象部分与实现部分分离,使它们可以独立地变化 继承树拆分
组合模式 (composite) 将多个对象组合成树型结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性 树形目录结构
装饰模式 (decorator) 动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替换,比派生一个子类更加灵活 附加职责
外观模式 (facade) 定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了子系统的使用 对外统一接口
享元模式 (flyweight) 运用共享技术有效地支持大量细粒度的对象 文章共享文字对象
代理模式 (proxy) 通过提供与对象相同的接口来控制对这个对象的访问

行为型模式

模式 简要说明 速记关键字
职责链模式 (chain of responsibility) 通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求 传递职责
命令模式 (command) 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,对请求排队或记录请求日志,支持可撤销的操作 日志记录,可撤销
解释器模式 (interpreter) 给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子 虚拟机的机制
迭代器模式 (iterator) 提供一种方法来顺序访问一个聚合对象中的各个元素而不需要暴露该对象的内部表示 数据库数据集
中介者模式 (mediator) 用一个中介对象来封装一系列的对象交互。它使各对象不需要显示地互相调用,从而达到低耦合,还可以独立的改变对象间的交互 不直接引用
备忘录模式 (memento) 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态
观察者模式 (observer) 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新 联动
状态模式 (state) 允许一个对象在其内部状态改变时改变它的行为 状态变成类
策略模式 (strategy) 定义一系列的算法,将每一个算法封装起来,并让它们可以相互替换,使算法独立于它的客户而变化 多方案切换
模板方法模式 (template method) 定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤
访问者模式 (visitor) 表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作

猜你喜欢

转载自blog.csdn.net/weixin_44215175/article/details/113103129