Skip to content

设计模式介绍

一、简介

设计模式是站在设计原则的基础之上。

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

  • 好处:为了重用代码、让代码更容易被他人理解、保证代码可靠性
  • 对不熟悉设计模式的同学,看起来更绕更难理解

GOF:

在 1994 年,由 四位作者合称 GOF(全拼 Gang of Four)四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software. 他们所提出的设计模式主要是基于以下的面向对象设计原则。

  • 对接口编程而不是对实现编程
  • 优先使用对象组合而不是继承

二、软件设计开发原则

为了让代码更好的重用性,可读性,可靠性,可维护性

软件设计六大原则SOLID(稳定的):

2.1 单一职责原则

一个类只负责一个功能领域中的相应职责,就一个类而言,应该只有一个引起它变化的原因,是实现高内聚、低耦合的指导方针

  • 高内聚:
    • 尽可能类的每个成员方法只完成一件事(最大限度的聚合)
    • 模块内部的代码,相互之间的联系越强,内聚就越高,模块的独立性就越好
  • 低耦合:减少类内部,一个成员方法调用另一个成员方法,不要有牵一发动全身

2.2 开闭原则

对扩展开放,对修改关闭,在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果

2.3 里氏替换原则LSP

任何基类可以出现的地方,子类一定可以出现。在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类型,用子类来替换父类对象

2.4 依赖倒转原则

开闭原则的基础,针对接口编程,依赖于抽象而不依赖于具体。高层模块不应该依赖低层模块,二者都应该依赖其抽象

2.5 接口隔离原则

客户端不应该依赖那些它不需要的接口,使用多个隔离的接口,比使用单个接口更好,降低类之间的耦合度

2.6 迪米特法则

  • 最少知道原则,一个实体应当尽量少的与其它实体之间发生相互作用,使得系统功能模块相对独立
  • 类之间的耦合度越低,越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及
  • 通过引入一个合理的第三者来降低现有对象之间的耦合

三、设计模式分类

3.1 创建型模式

提供了一种在创建对象的同时隐藏创建逻辑的方式,使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活

  • 常用:工厂模式、抽象工厂模式、单例模式、建造者模式
  • 不常用:原型模

3.2 结构型模式

关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式

  • 常用:适配器模式、桥接模式、装饰器模式、代理模式
  • 不常用:组合模式、外观模式、享元模式

3.3 行为型模式

特别关注对象之间的通信

  • 常用:责任链模式、迭代器模式、观察者模式、状态模式、策略模式、模板模式
  • 不常用:备忘录模式、命令模式
  • 几乎不用:访问者模式、中介者模式、解释器模式