我是靠谱客的博主 帅气帆布鞋,最近开发中收集的这篇文章主要介绍设计模式总览,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 一、设计模式来历--四人帮
    • 二、设计模式分类
    • 三、设计模式的七大原则
      • 单一职责原则
      • 接口隔离原则(Interface Segregation Principle)
      • 依赖倒转原则(Dependence Inversion Principle)
      • 里氏代换原则(Liskov Substitution Principle)
      • 开闭原则(Open Close Principle)
      • 迪米特法则,又称最少知道原则(Demeter Principle)
      • 合成复用原则(Composite Reuse Principle)

一、设计模式来历–四人帮

在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 《Design Patterns - Elements of Reusable Object-Oriented Software》 的书,该书首次提到了软件开发中设计模式的概念。四位作者合称 GOF(四人帮,全拼 Gang of Four)。

设计模式是为了让程序具有更好的:代码复用性、可读性、可扩展性、可靠性和使程序呈现高内聚、低耦合的特性。

二、设计模式分类

类型模式
创建型设计模式(5)工厂模式
抽象工厂模式
单例模式
建造者模式
原型模式
结构型模式(7)适配器模式
装饰器模式
代理模式
桥接模式
组合模式
外观模式
享元模式
行为型模式(11)策略模式
模板方法模式
观察者模式
迭代器模式
责任链模式
命令模式
备忘录模式
状态模式
访问者模式
中介者模式
解释器模式

三、设计模式的七大原则

核心思想:

  • 找出应用中可能需要变化之处,把它们从那些不需要变化的代码独立出来
  • 针对接口编程,而不是针对实现编程
  • 为了交互对象之间的松耦合设计而努力

单一职责原则

  • 对类来说,即一个类应该只负责一项职责。如果类A同时负责职责A和职责B,当为了职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1、A2。

接口隔离原则(Interface Segregation Principle)

  • 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。使用多个隔离的接口,比使用单个接口要好,降低类之间的耦合度。
  • 一个接口i有m1、m2、m3、m4等四个方法,类B和类C分别实现了接口i,类A依赖类B,只使用了m1和m2两个方法,类C依赖类B,只使用了m3和m4两个方法。此时按照接口隔离原则需要将接口i拆分成接口i1和接口i2,其中i1包含m1和m2两个方法,i2包含m3和m4两个方法。

依赖倒转原则(Dependence Inversion Principle)

  • 高层模块不应该依赖底层模块,二者都应该依赖其抽象
  • 抽象不应该依赖细节,细节应该依赖抽象
  • 依赖倒转(倒置)的中心思想是面向接口编程
  • 设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在Java中,抽象指的是接口或抽象类,细节就是指具体的实现
  • 使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成
  • 依赖关系传递的三种方式:接口传递、构造方法传递和setter方式传递

里氏代换原则(Liskov Substitution Principle)

  • 里氏代换原则是面向对象设计的基本原则之一
  • 引用基类的地方必须能透明地使用其子类对象
  • 在继承关系中,遵循LSP原则,在子类中尽量不要重写父类的方法,可以在基类的基础上增加新的行为
  • 里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范

开闭原则(Open Close Principle)

  • 对扩展开放(对提供方),对修改关闭(使用方)
  • 在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果,使程序的扩展性好,易于维护和升级,如抽象类与接口的设计

迪米特法则,又称最少知道原则(Demeter Principle)

  • 一个对象应该对其他对象保持最少的了解,类与类关系越密切,耦合度越大
  • 最少知道原则:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。即一个类对自己依赖的类知道的越少越好,也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public方法,不泄露任何信息

合成复用原则(Composite Reuse Principle)

  • 合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。

  • 类与类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。

    • 依赖:只要在类中使用到了对方,就存在依赖关系,如成员属性、方法参数类型、方法返回类型、方法内部使用等等。
    • 泛化:依赖关系的特例,实际上就是继承关系,是依赖关系的特例。
    • 实现:接口与实现类的关系,是依赖关系的特例。
    • 关联:关联具有导航性,即单向关系与双向关系,可表示为一对一、一对多或多对多关系,是依赖关系的特例。
    • 聚合:表示整体和部分的关系,整体与部分可以分开,是关联关系的特例。如电脑是一个整体,包含键盘和鼠标等外设,可分离。
    • 组合:表示整体和部分的关系,但整体与部分不可以分开,是关联关系的特例。如人有手有脚,不能分开。

最后

以上就是帅气帆布鞋为你收集整理的设计模式总览的全部内容,希望文章能够帮你解决设计模式总览所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部