设计模式

程序设计 Jul 07, 2020 阅读

目录

  • 了解设计模式
  • 面向对象设计原则
  • UML类图
  • GOF设计模式
  • 小结
  • 书籍推荐
  • 参考文献

了解设计模式

设计模式的起源

每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能无数次地反复使用这个方案,而不必再做重复的思考。 -- Christopher Alexander

--2

Gang Of Four

  • Ralph Johnson
  • Erich Gamma
  • Richard Helm
  • John Vlissides

--3-1

设计模式的定义

在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。

设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。面向对象设计模式通常以类或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类或对象。

设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

并非所有的软件模式都是设计模式,设计模式特指软件“设计”层次上的问题。还有其他非设计模式的模式,如架构模式。同时,算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

设计模式的作用

  • 解决某些特殊的设计问题
  • 减少重复设计的工作量
    • 重用设计方案比重用代码更有意义,它会自动带来代码重用
    • 模式在实践中可作为模板使用
  • 把专家的知识、经验传递给新手
  • 为设计提供共同的词汇
    • 每个模式名就是一个设计词汇,其概念使得程序员间的交流更加方便
  • 编写开发文档更加容易
    • 在开发文档中采用模式名称可以让其他人更容易理解设计者的想法,为什么这么做、做了些什么
  • 应用设计模式可以让系统重构变得容易

面向对象设计原则(SOLID)

  • Single Responsibillity principle(单一原则)
    • 类的职责单一
    • 一个类只有一个引起它变化的原因
  • Open-Closed principle(开闭原则)
    • 对扩展开放,对修改关闭
  • Liskov subsitution principle(里氏替换原则)
    • 使用父类的地方都能够使用其子类替换
  • Interface segretation principle(接口隔离原则)
    • 多个特定的接口要好于一个宽泛用途的接口
  • Dependency inversion principle(依赖反转原则)
    • 针对接口编程,而不是针对实现编程

UML类图

  • UML(Unified Modeling Language)统一建模语言
  • 建模目的是产生模型
  • 模型是对现实的简化,对事物的抽象,了解事物的本质

WX20200707-103313@2x

GOF设计模式

  • 模式名和分类

    • 创建型(Creational)、结构型(Stuctural)、行为型(Behavioral)
  • 意图

    • 做什么,基本原理,解决什么特定问题
  • 动机

    • 用以说明一个设计问题以及如何使用模式中的类、对象来解决改问题的特性情景
  • 适用性

    • 什么情况下可以使用
  • 结构

    • 使用UML类图描述模式
  • 参与者

    • 设计模式中的类和对象以及它们各自的职责
  • 协作

    • 模式的参与者怎么协作来完成它们的职责
  • 效果

    • 模式的好处是什么,需要做哪些权衡,哪些方面可以独立改变
  • 实现

    • 实现模式的提示、技术要点以及应该避免的缺陷
  • 代码示例

    • 实现该模式的代码片段
  • 已知应用

    • 实际系统中发现的模式的例子
  • 相关模式

    • 与这个模式紧密关联的模式有哪些,不同之处,应该与哪些其他的模式一起使用

创建型模式

创建型设计模式抽象了实例化的过程

  • Abstract Factory(抽象工厂)
  • Builder(生成器)
  • Factory Method(工厂方法)
  • Prototype(原型)
  • Singleton(单例)

结构型模式

结构型设计模式关注如何组合类和对象以获得更大的结构

  • Adapter(适配器)
  • Bridge(桥梁)
  • Composite(组合)
  • Decorator(装饰)
  • Facade(外观)
  • Flyweight(享元)
  • Proxy(代理)

行为型模式

行为型设计模式涉及算法和对象间职责的分配

  • Chain of Resonsibility(职责链)
  • Command(命令)
  • Interpreter(解释器)
  • Iterator(迭代器)
  • Mediator(中介者)
  • Memento(备忘录)
  • Observer(观察者)
  • State(状态)
  • Strategy(策略)
  • Template Method(模板方法)
  • Visitor(访问者)

小结

  • 设计模式
    • 起源:建筑工程(1979),软件工程(1990)
    • 定义:软件设计中反复出现的各种问题的解决方案
    • 作用:解决特定设计问题、减少重复工作量、方便沟通、易于编写设计文档等等
  • 面向对象设计原则
    • SOLID
  • UML类图
    • 继承、实现、组合、聚合、关联、依赖
  • GOF设计模式
    • 描述设计模式
      • Creational
        • Singleton
      • Structural
        • Proxy
        • Adapter
      • Behavioral
        • Chain of Responsibility
        • Command

书籍推荐

WX20200707-103920@2x

参考文献