设计模式概述

一、面向对象的设计原则

  • 1. 单一指责原则(SRP,Single Responsibility Principle) 
    系统里的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。

  • 2. 开闭原则(OCP,Open Close Principle) 
    对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。

  • 3. 依赖注入原则(DIP,Dependence Inversion Principle) 
    面对接口编程,依赖于抽象而不依赖于具体。

  • 4. 里氏替换原则(LSP,Liskov Substitution Principle) 
    任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。LSP是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

  • 5. 迪米特法则(最少知道原则)(DP,Demeter Principle)(LOD,Law of Demeter) 
    一个对象应当尽量少的与其他对象之间发生相互作用,使得系统功能模块相对独立(降低各个对象之间的耦合),提高系统可维护性。

  • 6. 接口隔离原则(ISP,Interface Segregation Principle) 
    使用多个隔离的接口,比使用单个接口要好。不应该强迫客户程序依赖它们不需要使用的方法。(一个接口应该只提供一种对外功能,不应该把所有的操作都封装到一个接口当中)

  • 7.优先使用组合而不是继承原则(CARP,Composite/Aggregate Reuse Principle)

二、设计模式的分类

1. 创建型模式,共五种

  • 单例模式(Singleton)

  • 简单工厂模式(Simple Factory),此模式并不在23种设计模式之中

  • 工厂方法模式(Factory Method)

  • 抽象工厂模式(Abstract Factory)

  • 原型模式(Prototype)

  • 创建者模式(Builder)

2. 结构型模式,共七种

  • 适配器模式(Adapter)

  • 门面模式(Facade)

  • 代理模式(Proxy)

  • 合成模式(Composite)

  • 享元模式(Flyweight)

  • 装饰模式(Decorator)

  • 桥接模式(Bridge)

3. 行为型模式,共11种

  • 策略模式(Strategy)

  • 迭代器模式(Iterator)

  • 模版方法模式(Template Method)

  • 中介者模式(Mediator)

  • 访问者模式(Vistor)

  • 职责链模式(Chain of Responsibility)

  • 状态模式(State)

  • 解释器模式(Interpreter)

  • 观察者模式(Observer)

  • 命令模式(Command)

  • 备忘录模式(Memento)

设计模式概述