概念
- 对象
- 类
- 实体类:数据
- 边界类:系统用于连接外部的类
- 控制类:类与类之间衔接控制
- 抽象
- 封装
- 继承与泛化
- 泛化:将多个相似子类抽象成一个父类
- 多态:重载
- 接口
- 消息:对象间通信采用的机制,异步传输
- 组件
- 模式和复用:包含架构模式,设计模式等。模式是为了复用
设计原则
考法 1:给一段描述,问是否符合/违反 xx 原则
考法 2:给一段描述,问是否规范
单一职责原则
开放-封闭原则:对扩展开放,对修改封闭
- 来了新需求不是修改原有的类,而是扩展出新类
李氏替换原则:子类可以替换父类
- 这就要求不要随意修改父类
依赖倒置原则:依赖于抽象(接口),而不是具体实现;针对接口编程,不要针对实现编程
组合重用原则:尽量使用组合而不是继承关系达到重用目的
- 继承是紧耦合,父类变子类也要跟着变,所以要少用
迪米特原则/最少知识法则:一个对象应当对其他对象有尽可能少的了解
UML
考点 1:了解 UML 的一系列图
考点 2:了解四种关系
考点 1:掌握哪些是结构图(静态图),哪些是行为图(动态图)
结构图(静态图)
类图
对象图
包图
组合结构图
构件图
部署图
软件的构件应当部署在哪些硬件的节点上
制品图
行为图(动态图)
用例图(最常考)
用例图有些教材定义为静态图,有些定义为动态图
系统与外部的交互关系
特点:小人
顺序图/序列图
强调按时间顺序
通信图/协作图
不强调时间顺序的顺序图
状态图
状态的变迁,转移的情况
活动图
类似于流程图
定时图(不咋考)
交互概览图(不咋考)
设计模式
概念
架构模式(高层)
全局的
如 C/S,B/S,SOA
设计模式(中层)
局部的软件系统的设计,这一步与语言无关
进行构件设计的时候会用到设计模式
惯用法(低层)
与语言有关
如:引用-计数就是 C++语言的一种惯用法
分类
考点:xx 模式是什么类型的模式
创建型模式
用于创建对象的模式
简单使用 new 来创建对象灵活性不够
抽象工厂模式
- 是其他工厂的工厂
- 例:一系列工厂是用于数据库相关的,则创建一个数据库工厂
构建器模式
- 一个对象由多个对象组合起来,可以把各个部分封装起来
工厂方法模式
- 可以在运行时指定创建具体是哪个类的对象
原型模式(克隆模型)
- 通过拷贝原有的对象生成新的对象
- 效率比 new 高
单例模式
结构型模式
处理类或对象的组合问题
适配器模式:转换接口
“适配器”的含义与电源适配器相同
将接口转换成用户能用的接口
桥接模式:拆分继承树
将一个类的抽象部分和实现部分分开,拆成两棵继承树,这样原有的继承树就不会很大
组合模式:树形目录结构
将类组合成类似于树形目录结构
装饰模式:附加职责
动态给对象添加额外的职责
外观模式:对外统一接口
定义一个高层接口,包含一组接口
行为型模式
类和对象交互
职责分配问题
职责链模式:传递职责
例:员工发送报销请求,1000 元以下部门经理审批,10000 元以下总经理审批
不分别连接员工和部门经理、员工和总经理,而是形成员工-部门经理-总经理的职责链
减少发送者与接收者之间的耦合
命令模式:日志记录,可撤销
命令不是一个简单的消息,而是封装成一个对象
便于日志记录,撤销操作
解释器模式
构造一个虚拟机,根据文法表示来解释语句
迭代器模式
中介者模式:不直接引用
用一个中介对象来封装一系列对象交互
这样就不用互相显式调用,降低了耦合程度
备忘录模式
在对象之外保存对象的状态,以便后期恢复状态
观察者模式
一对多
一个对象发生改变,所以依赖它的东西都得到通知并自动更新
状态模式:状态定义成类
一个对象,状态改变时行为跟着改
例:白银会员 9 折,黄金会员 8 折
策略模式:多种方案切换
例:把冒泡排序,选择排序等算法一一封装,可以随时用一个替换另一个
模板方法模式
访问者模式
按照类模式/对象模式分类
既可以是类模式,也可以是对象模式的: