一、面向对象设计原则
设计原则名称 | 设计原则简介 |
---|---|
单一职责 | 类的职责要单一,不能将太多的职责放在一个类中 |
开闭原则 | 软件实体对扩展开发,但对修改是关闭的,即在不修改一个软件的基础上去扩展其功能 |
里氏代换原则 | 在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象 |
依赖倒转原则 | 要针对抽象层编程,而不要针对具体类编程 |
接口隔离原则 | 使用多个专门的接口取代一个统一的接口 |
合成复用原则 | 在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系 |
迪米特法则 | 一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用,而是通过引入一个第三者发生间接交互 |
二、设计模式的分类
设计模式一般有两种分类方式:根据其目的可分为创建型、结构型和行为型三种;根据范围,即模式主要是用于处理类之间的关系还是处理对象之间的关系,可分为类模式和对象模式两种。
2.1 创建型、结构型和行为型
- 创建型模式主要用于创建对象,GoF提供了5种创建型模式,分别是工厂方法模式、抽象工厂模式、建造者模式、原型模式和单列模式。
- 结构性模式主要用于处理类或对象的组合,GoF提供了7种结构型模式,分别是适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。
- 行为型模式主要用于描述对类或对象怎样交互和怎样分配职责,GoF提供了11种行为型模式,分别是职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。
2.2 类模式和对象模式
- 类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。分别是工厂方法模式、适配器模式、解释器模式、模板方法模式。
- 对象模式处理对象之间的关系,这些关系在运行时刻变化,更具动态性。分别是抽象工厂模式、建造者模式、原型模式、单列模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式、职责模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式。
根据合成复用原则,在系统设计时我们应该尽量用关联关系来取代继承关系,因此大部分模式属于对象模式,纯的类模式很少。