设计模式之面向对象思想设计原则

I. 面向对象思想设计原则

在开发面向对象程序时,我们应该遵循以下的原则,这些原则都是为了提高程序的扩展性,维护性,和复用性

1. 单一职责原则

  • 开发人员经常说的”高内聚,低耦合”
  • 每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个
  • 在设计模式中,所有的设计模式都遵循这一原则

2. 开闭原则

  • 核心思想:一个对象对扩展开放,对修改关闭
  • 对类的改动是通过增加代码进行的,而不是修改现有代码
  • 软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证它能一直运行下去,如何能够做到这一点呢?
    • 这就需要借助于抽象和多态,即把可能变化的内容抽象出来,从而使抽象的部分是相对稳定的,而具体的实现则是可以改变和扩展的

3. 里氏替换原则

  • 核心思想:在任何父类出现的地方都可以用它的子类来替代
  • 同一个继承体系中的对象应该有共同的行为特征

4. 依赖注入原则

  • 核心思想:要依赖于抽象,不要依赖于具体实现
  • 在应用程序中,所有的类如果使用或依赖于其他的类,则应该依赖这些其他类的抽象类,而不是这些其他类的具体类
  • 为了实现这一原则,就要求我们在编程的时候针对抽象类或者接口编程,而不是针对具体实现编程

5. 接口分离原则

  • 核心思想:不应该强迫程序依赖它们不需要使用的方法
  • 一个接口不需要提供太多的行为,一个接口应该只提供一种对外的功能,不应该把所有的操作都封装到一个接口中

6. 迪米特原则

  • 核心思想:一个对象应当对其他对象尽可能少的了解
  • 降低各个对象之间的耦合,提高系统的可维护性
  • 在模块之间应该只通过接口编程,而不理会模块的内部工作原理,它可以使各个模块耦合度降到最低,促进软件的复用

II. 设计模式

1. 设计模式概述

  • 设计模式 (Design pattern) 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性
  • 设计模式不是一种方法和技术,而是一种思想
  • 设计模式和具体的语言无关,学习设计模式就是要建立面向对象的思想,尽可能的面向接口编程,低耦合,高内聚,使设计的程序可复用
  • 学习设计模式能够促进对面向对象思想的理解,反之亦然。它们相辅相成

2. 设计模式的几个要素

  • 名字 : 必须有一个简单,有意义的名字
  • 问题 : 描述在何时使用模式
  • 解决方案 : 描述设计的组成部分以及如何解决问题
  • 效果 : 描述模式的效果以及优缺点

3. 设计模式的分类

  • 创建型模式 : 对象的创建
    • 简单工厂模式
    • 工厂方法模式
    • 抽象工厂模式
    • 建造者模式
    • 原型模式
    • 单例模式
  • 结构型模式 : 对象的组成(结构)
    • 外观模式
    • 适配器模式
    • 代理模式
    • 装饰模式
    • 桥接模式
    • 组合模式
    • 享元模式
  • 行为型模式 : 对象的行为
    • 模板方法模式
    • 观察者模式
    • 状态模式
    • 职责链模式
    • 命令模式
    • 访问者模式
    • 策略模式
    • 备忘录模式
    • 迭代器模式
    • 解释器模式

Share this on