Skip to content

设计模式原则与介绍 #6

Description

@edwineo

变与不变

能够决定一个前端工程师的本质的,不是那些瞬息万变的技术点,而是那些不变的东西

什么是不变的东西?

所谓“不变的东西”,说的就是这种驾驭技术的能力

具体来说,它分为以下三个层次:

  • 能用健壮的代码去解决具体的问题;
  • 能用抽象的思维去应对复杂的系统;
  • 能用工程化的思想去规划更大规模的业务。

很多人缺乏的并不是这种高瞻远瞩的激情,而是我们前面提到的“不变能力”中最基本的那一点——用健壮的代码去解决具体的问题的能力。这个能力在软件工程领域所对标的经典知识体系,恰恰就是设计模式。

所以说,想要提升开发能力,先掌握设计模式

设计模式原则与思想

设计模式不是一堆空空如也、晦涩鸡肋的理论,它是一套现成的工具 —— 就好像你想要做饭的时候,会拿起厨具直接烹饪,而不会自己去铸一口锅、磨一把菜刀一样。

当我们解数学题目的时候,往往会用到很多公式/现成的解题方法。比如已知直角三角形两边长,求另一边,我们会直接用勾股定理(没有人会每求一次边长都自己推一遍勾股定理)。

SOLID设计原则

设计原则是设计模式的指导理论,它可以帮助我们规避不良的软件设计。SOLID 指代的五个基本原则分别是:

  • 单一功能原则(Single Responsibility Principle)
  • 开放封闭原则(Opened Closed Principle)
  • 里式替换原则(Liskov Substitution Principle)
  • 接口隔离原则(Interface Segregation Principle)
  • 依赖反转原则(Dependency Inversion Principle)

在 JavaScript 设计模式中,主要用到的设计模式基本都围绕**“单一功能”“开放封闭”**这两个原则来展开。

核心思想--封装变化

设计模式出现的背景,是软件设计的复杂度日益飙升。软件设计越来越复杂的“罪魁祸首”,就是变化

如果说我们写一个业务,这个业务是一潭死水,初始版本是 1.0,100 年后还是 1.0,不接受任何迭代和优化,那么这个业务几乎可以随便写。反正只要实现功能就行了,完全不需要考虑可维护性、可扩展性。但在实际开发中,不发生变化的代码可以说是不存在的。我们能做的只有将这个变化造成的影响最小化 —— 将变与不变分离,确保变化的部分灵活、不变的部分稳定

这个过程,就叫**“封装变化”**;这样的代码,就是我们所谓的“健壮”的代码,它可以经得起变化的考验。而设计模式出现的意义,就是帮我们写出这样的代码。

原型链示意图

23种设计模式

二十年前 GOF 提出了最经典的23种设计模式,这23种设计模式可以按照“创建型”、“行为型”和“结构型”进行划分:

设计模式的核心思想,就是“封装变化”。无论是创建型、结构型还是行为型,这些具体的设计模式都是在用自己的方式去封装不同类型的变化。

  • 创建型模式封装了创建对象过程中的变化,比如工厂模式,它做的事情就是将创建对象的过程抽离;
  • 结构型模式封装的是对象之间组合方式的变化,目的在于灵活地表达对象间的配合与依赖关系;
  • 行为型模式则是将对象千变万化的行为进行抽离,确保我们能够更安全、更方便地对行为进行更改。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions