设计模式与前端工程师

设计模式,前端,工程师 · 浏览次数 : 248

小编点评

##前端是否应该学习设计模式? 前端工程师应该学习设计模式,因为它可以帮助他们: * **提高代码可维护性:**设计模式可以帮助他们将变与不变分离,使其代码更易于维护和修改。 * **提升代码可扩展性:**设计模式可以帮助他们创建代码的复用性,使其更容易维护和扩展。 * **提高代码可读性:**设计模式可以帮助他们写更清晰、更容易理解的代码。 * **提升代码可移植性:**设计模式可以帮助他们编写代码,使其更容易移植到不同的框架和平台上。 当然,前端工程师应该从设计模式中学习哪些基本思想和方法,以及如何将其应用到实际项目中。

正文

 前端要不要学习设计模式

  始终认为每个行业都有自己的特点,各自的专业性。一个开发工程师如果不知道电脑是哪些基本硬件组成,那么我们大概率都会认为这个人非常不专业。那么前端要不要学设计模式呢?设计模式跟前端有多大关系呢?

  前端工程师首先是一个工程师,既然是一个软件工程师,那么类似设计模式、数据结构、网络相关等基础知识点都是必须的,而不是要不要学的问题,一个工程师应该具备这个领域特有的知识体系,而不是零散的知识点

 

 

工程师核心是什么

  互联网的这些年,技术革命就没消停过。就比如前端来说,框架、库,从原生 JavaScript 开始写,然后写 jQuery、写 zepto、写 Angular,写写写,一直写到现在的 Vue/React 等。各个技术概念、框架、库都迭代的非常快,难道工程师的核心仅仅是会使用某某框架、库吗?难道会使用java 的程序员一定比不会用java的程序厉害吗?

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

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

  1. 编码能力
  2. 设计思维
  3. 计算机基础
  4. 技术广度、深度
  5. 解决问题的能力
  6. 沟通能力
  7. 文档能力

编码能力具体来说,它分为以下三个层次:

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

这三种能力在成长过程中是层层递进的关系,其中后两种能力可以说是对架构师的要求。事实上,能做到第一点并且把它做到扎实、做到娴熟的人,已经堪称同辈楷模。

用健壮的代码去解决具体的问题的能力。这个能力在软件工程领域所对标的知识体系,恰恰就是设计模式。所以,要成为一个靠谱的开发,先掌握设计模式

设计模式到底是什么

维基百科中对设计模式的定义是这样的:在软件工程中,设计模式(Design Pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。

我的理解是设计模式并不是一个虚无的东西,而是经过各种软件开发人员在特定的场景下提炼出来怎么样写代码的一种思路、一种解决方案,按照他们的思路可以让代码更加容易维护、扩展。也就是通常说的健壮的代码。

设计模式基本原则

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

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

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

设计模式核心思想

  在实际开发中,不发生变化的代码可以说是不存在的。我们能做的只有将这个变化造成的影响最小化 —— 将变与不变分离,确保变化的部分灵活、不变的部分稳定,这个过程,就叫“封装变化”
。这样的代码,就是通常说的“健壮”的代码,它可以经得起变化的考验。

  而设计模式出现的意义,就是帮我们写出这样的代码。设计模式的核心思想,就是“封装变化”,将变与不变分离,确保变化的部分灵活、不变的部分稳定,代码有良好的可维护性、可扩展性

  简单的说就是观察你整个逻辑里面的变与不变,然后将变与不变分离,达到使变化的部分灵活、不变的地方稳定的。

常见的23种设计模式分类

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

创建型模式:封装了创建对象过程中的变化,比如下节的工厂模式,它做的事情就是将创建对象的过程抽离;

结构型模式:封装的是对象之间组合方式、以及通信的变化,目的在于灵活地表达对象间的配合与依赖关系;

行为型模式:则将是对象千变万化的行为进行抽离,确保我们能够更安全、更方便地对行为进行更改。

 

参考:
《 JavaScript 设计模式》

 

与设计模式与前端工程师相似的内容:

设计模式与前端工程师

前端要不要学习设计模式 始终认为每个行业都有自己的特点,各自的专业性。一个开发工程师如果不知道电脑是哪些基本硬件组成,那么我们大概率都会认为这个人非常不专业。那么前端要不要学设计模式呢?设计模式跟前端有多大关系呢? 前端工程师首先是一个工程师,既然是一个软件工程师,那么类似设计模式、数据结构、网络相

PHP转Go系列 | ThinkPHP与Gin框架之API接口签名设计实践

大家好,我是码农先森。 回想起以前用模版渲染数据的岁月,那时都没有 API 接口开发的概念。PHP 服务端和前端 HTML、CSS、JS 代码混合式开发,也不分前端、后端程序员,大家都是全干工程师。随着前后端分离、移动端开发的兴起,用后端渲染数据的开发方式效率低下,已经不能满足业务对需求快速上线的要

redux-saga原理

前言 工作中使用了redux-saga这个redux中间件,如果不明白内部原理使用起来会让人摸不着头脑,阅读源码后特意对其原理做下总结。 redux的特点 一个标准、管理应用副作用的redux中间件 实现切面编程方式 声明式的编写方式 订阅发布的设计模式 优点: 把异步操作转移到单独 saga文件中

【23种设计模式】原型模式(五)

## 前言 在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这就会增加创建类的复杂度和创建过程与客户代码复杂的耦合度。如果采用工厂模式来创建这样的实例对象的话,随着产品类的不断增加,导致子类的数量不断增多,也导致了相

【数据中台商业化】数据中台微前端实践

我们设计目前的门户基座,可以快速浏览各个平台,同时串联数据开发与管理的工作,减少用户的试错成本,提升工作效率。

《优化接口设计的思路》系列:第二篇—接口用户上下文的设计与实现

前言 大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 作为一名从业已达六年的老码农,我的工作主要是开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统,对接

从零做软件开发项目系列之三——系统设计

前言 在与客户充分接触后取得需求调研结果,然后分析调研内容,撰写完成项目的需求规格说明书。这是一个正式的文件,需要供需双方签字确认。说明书中会明确需求方的要求和开发方实现的内容,依据需求规格说明书,开发方就要开展系统设计工作。 进行系统设计工作,粗略的可以分成两个阶段,概要设计(总体设计)阶段和详细

文件系统(八):Linux JFFS2文件系统工作原理、优势与局限

liwen01 2024.06.23 前言 在嵌入式Linux设备中,经常使用jffs2文件系统来作为参数区的文件系统格式。至于为什么要使用jffs2来作为参数区的文件系统,我猜大部分人都没有做过多的思考。 jffs2在2021年被设计出来,距今已过二十多年,现在在嵌入式设备中它还在被大量使用、说明

CIC滤波器仿真与实验过程及结果记录

整理于2023-10-08 0.0 前言: https://www.cnblogs.com/luxzhi/p/17734148.html 前面介绍了使用matlab中的Filter Designer工具箱进行CIC抽取滤波器设计的仿真过程与结果。下面在前面的基础上针对现有的【正点原子ZYNQ】平台,

[转帖]TiDB 数据库核心原理与架构 [TiDB v6](101)笔记

https://www.jianshu.com/p/01e49a93f671 description: "本课程专为将在工作中使用 TiDB 数据库的开发人员、DBA 和架构师设计。 本门课侧重于 TiDB 数据库的架构和设计原则,这是未来管理、开发、性能调整和故障排除的基础。在学习本课程前,您需要