面向对象技术

面向对象技术

面向对象的基本概念

  • 对象:属性(数据)+ 方法(操作)+ 对象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协议 。转载请注明出处!