首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
前端工程师的基础之论
论道-javascript设计模式
js设计模式之工厂模式
js设计模式之抽象工厂
js设计模式之单例模式
js设计模式实战-单例模式应用
js设计模式之原型模式-Property
js设计模式之装饰器
装饰器模式原理深入与实战
js设计模式之适配器
js设计模式之代理模式
代理模式应用实战
js设计模式之策略模式
js设计模式之状态模式
js设计模式之观察者
观察者模式面试必备
js设计模式之迭代器
设计模式进阶
当前位置:
首页>>
技术小册>>
经典设计模式Javascript版
小册名称:经典设计模式Javascript版
即使是在瞬息万变的前端领域,也存在一些具备“一次学习,终生受用”特性的知识,比如我们这次要展开来讲的JavaScript设计模式。 > 在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。 ——维基百科 烹饪有菜谱,游戏有攻略,每个领域都存在一些能够让我们又好又快地达成目标的“套路”。在程序世界,编程的“套路”就是设计模式。 授人以鱼,不如授人以渔。在尝试学习一门知识之前,最重要的事情是搞清楚这块知识本身的意义(为什么要学?)、作用(学了它能干嘛?)和特性(怎么学比较好?),从而建立起自己的全局观 —— 这个过程和知识本身同样重要,也正是这一节我们要着重解决的两个问题。 ## 前端职业分析 大家现在需要冷静下来思考这么一个问题:我很拼,别人也很拼,**所有人都在拼的时候,我特别的地方、或者准确地说——我的核心竞争力在哪里**? 能够决定一个前端工程师的本质的,不是那些瞬息万变的技术点,而是那些**不变的东西**。 所谓“不变的东西”,说的就是这种**驾驭技术的能力**。 具体来说,它分为以下三个层次: * 能用健壮的代码去解决具体的问题; * 能用抽象的思维去应对复杂的系统; * 能用工程化的思想去规划更大规模的业务。 这三种能力在你的成长过程中是层层递进的关系,而后两种能力可以说是对架构师的要求。事实上,在我入行以来接触过的工程师里,能做到第一点,并且把它做到扎实、做到娴熟的人,已经**堪称同辈楷模**。 ## 前端工程师,首先是软件工程师 > 基础理论知识是一个人的基线,理论越强基线越高。再为自己定一个目标和向上攀附的阶梯,那么达到目标就是时间问题,而很多野路子工程师搞了半辈子也未达到优秀工程师的基线,很多他们绞尽脑汁得出的高深学问,不过是正规工程师看起来很自然的东西。—— 吴军 过去,人们对软件工程的理解比较狭隘,认为前端就是页面,和软件是两回事儿。随着前端应用复杂度的日新月异,如今的前端应用也妥妥地成为了软件思想的一种载体,而前端工程师,也被要求在掌握多重专业技能之余,具备最基本的软件理论知识。 技术人之间的口水战,每次但凡想上升一点高度,便要拿”架构“这样高大上的话题出来晃晃眼。但事实上,**很多人缺乏的并不是这种高瞻远瞩的激情,而是我们前面提到的“不变能力”中最基本的那一点——用健壮的代码去解决具体的问题的能力**。这个能力在软件工程领域所对标的经典知识体系,恰恰就是设计模式。 所以说,**想做靠谱开发,先掌握设计模式**。 ## 设计模式的学习之道 “橘生淮南则为橘,橘生淮北则为枳”——一些在服务端应用场景下看似合理、好用又酷炫的操作,生搬硬套到前端的场景里可能就会弄巧成拙。本册的目的并不是做传统设计模式书籍的“译本”,而是面向前端工程师,讲有利于前端的技术。因此在正式的实战章节里,我们权衡每种模式对前端的价值、对 23 种设计模式做了取舍,保留下来的这些设计模式,具备这两个共性: 1. 前端能用,而且好用; 2. 面试会考,而且常考。 通过学习这部分设计模式,我们至少可以达到三个目的: 1. 充分理解前端设计模式的核心思想和基本理念,在具体的场景中掌握抽象的设计原则 2. 会写代码,会写好代码; 3. 会面试,能言之有物。 ### 其实不难 设计模式的“难”,在于其令人望而生畏的**抽象性**和知识点的**分散性**。这带来了本册要着重解决的问题——**帮助大家摆脱枯燥乏味的技术恐惧感**。 抽象性几乎是所有理论性知识共有的特性,它带来最直观的问题就是可能一段话你**每个字都认识,但连在一起不知道它在说啥**:)。于是产生了“这块知识看起来好牛逼,我一定学不会吧”这样的错觉。 其实设计模式并不高大上,它是一个非常接地气、非常实际的东西——因为它本身就是一帮非常苦逼的程序员在自己的职业生涯里实打实地踩坑踩出来的。解决知识抽象性带来的理解障碍,重要的不是反复的陈述、解释,而是**把自己放到一个正确的场景里,去体会这个模式的好**。在学习具体设计模式的过程中,我们每个章节都以原理->实践->总结这样的流程来走,也希望大家不要随意跳读,确保自己不仅是跟着看了,更是跟着做了。设计模式说起来是理论知识,但它**毕竟是人们在实践过程中总结、提炼出来的**,掌握它的意义,正是为了把它**还原到我们日常的实践中去**。 分散性则是因为设计模式本身就是一套**解决不同问题**的方案的集合,这些方案之间乍一看好像没有什么关联,故而很容易使学习者陷入边学边忘的窘境。 但所谓“分散性”其实也是纸老虎——深入了解设计模式后,大家会发现模式与模式间存在着不可忽略的共性与关联——在下一小节《设计模式的道与术》中,我们将会学习设计模式中几个重要的设计原则和核心的设计思想;接下来学习具体的设计模式时,小册会在具体的应用场景里把这些设计原则掰碎嚼烂了还原给大家。在这个过程中大家会发现,不同的设计模式并非是一座座的孤岛,他们之间彼此呼应、相互成就,共同构建起了一套完整而经典的软件思想体系。 此外,设计模式中有几个特别重要、特别好使、特别受面试官关注的的,我们在讲解的过程中会有针对性地穿插一些**高频面试真题**(注意面试题不一定会单开小节,有的面试题就穿插于原理讲解之中~)。具体是哪几个,可能要等大家读到了那一节才知道了哈哈(所以不要随便跳读:))。 设计模式中最核心的理念和思想有哪些,如何将设计模式从传统的 C++、Java 语言迁移到 JavaScript、从服务端业务场景迁移到现代化的前端应用场景,如何把握本书的重点难点
下一篇:
论道-javascript设计模式
该分类下的相关小册推荐:
KnockoutJS入门指南
零基础学JavaScript
WebSocket入门与案例实战
Flutter核心技术与实战
剑指javascript
javascript设计模式原理与实战
编程入门课:Javascript从入门到实战
剑指javascript-ES6
ES6入门指南
Javascript-ES6与异步编程
Node.js 开发实战
深入学习前端重构知识体系