面向对象技术
面向对象技术
面向对象的基本概念
- 对象:属性(数据)+ 方法(操作)+ 对象ID
- 类(实体类/控制类/边界类)
- 继承与泛化:复用机制
- 封装:隐藏对象的属性和实现细节,仅对外公开接口
- 多态:不同对象收到同样的消息产生不同的结果
- 接口:一种特殊的类,他只有方法定义没有实现
- 重载:一个类可以有多个同名而参数类型不同的方法
- 模板类
- 消息和消息通信:消息是异步通信的。
面向对象设计7大原则
- 单一职责原则:设计目的单一的类
- 开发-封闭原则:对扩展开发,对修改封闭
- 李氏(Liskov)替换原则:子类可以替换父类
- 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
- 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
- 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
- 迪米特(Demeter)原则(最少知识法则):一个对象对其他对象有尽可能少的了解。(独立性)
UML(统一建模语言)
UML2.0:
- 结构图
- 类图
- 对象图
- 包图
- 组合结构图(2.0新加的)
- 构件图
- 部署图:软硬件之间映射
- 制品图
- 行为图
- 用例图:系统与外部参与者的交互
- 顺序图:强调按时间顺序
- 通信图(协作图)
- 定时图(2.0新加的)
- 状态图
- 活动图:类似程序流程图,并行行为
- 交互概念图
类图
关系 | 说明 | 表示方法 |
---|---|---|
依赖关系 | 一个事物发生变化影响另一个事物 | 虚线实心箭头 |
泛化(继承)关系 | 特殊(派生)/一般(基类)关系 | 实线空心箭头 |
关联关系 | 描述了一组链,链是对象之间的连接。 | 实线 |
聚合关系 | 整体与部分生命周期不同(部分离开整体还能使用 | 实线空心菱形 |
组合关系 | 整体与部分生命周期相同(部分离开整体不能使用) | 实线实心菱形 |
实现关系 | 接口与类之间的关系 | 虚线空心箭头 |
设计模式的分类
- 创建型模式
- 工厂方法(factory method)模式
- 抽象工厂(abstract factory)模式
- 原型(porototype)模式
- 单例(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 工厂方法模式 |
定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟。 | 动态生产对象 |
Prototype 原型模式 |
用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象 | 克隆对象 |
Singleton 单例模式 |
保证一个类只有一个实例,并提供一个访问它的全局访问点 | 单实例 |
结构型模式
设计模式名称 | 简要说明 | 速记关键字 |
---|---|---|
Adapter 适配器 |
将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作 | 转换接口 |
Bridge 桥接模式 |
将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化 | 继承树拆分 |
Composite 组合模式 |
将对象组合成属性结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性 | 树形目录结构 |
Decorator 装饰模式 |
动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更佳灵活 | 附加职责 |
Facade 外观模式 |
定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用 | 对外统一接口 |
Flyweight 享元模式 |
提供支持大量细粒度对象共享的有效方法 | 文章共享文字对象 |
Proxy 代理模式 |
为其他对象提供一钟代理以控制这个对象的访问 |
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!