你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

CoffeeCode
• 阅读 667

大家好,这里是 Murlin,一个专注前端开发的老程序员,分享的每篇文章都是为了帮助你更好的理解前端知识。

我们的口号是:没有..哦不对,是拯救头发!

一、系列文章的说明

首先,这是一个系列的文章,大家也知道我们不可能通过短短一篇的推文就能掌握设计模式,当然我倒是希望靠一篇文章就能火起来,哈哈哈哈,所以我会合理的把内容分开到几篇文章中去,希望大家能够循序渐进的学习。

你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

文章的内容主要依赖由腾讯团队出版的《JavaScript 设计模式与开发实践》一书,也穿插有我个人的理解与开发的经验。

你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

知道大家不爱看书,没关系,看我的文章就好,主打一个浅显易懂、老少咸宜。

我会一点点的从基础入手,也包含了面向对象、函数式编程等相关的内容,都是为了更好的学习设计模式,请大家不要心急,一点一点的去看,去感受和理解。

好了,希望能给大家带来更多的帮助,那么就开始正文吧~

二、什么是设计模式?

我们拿追女孩来举例,带大家回到青春期,让我们一起回到那个懵懂的年纪。

夕阳照在窗帘上,透出橘黄色的光,你的同桌小美的马尾辫末梢也闪烁着温暖的色彩,你的心开始有了悸动,少年准备行动起来,去捕捉年少最美好的回忆...

那么,大家都是怎么行动的呢,写纸条?带早餐?那么为什么会这么做呢?是不是因为班级里其他的同学就是这么下手的呢,又或者是看明晓溪的青春小说学的呢🤭

你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

其实诸如写纸条、带早餐等等方式,都算是当年追女孩的标准「套路」,这样的套路其实就是一种模式,我们可以叫它「青少年纯情模式」。

也有一些小伙伴喜欢「喜欢她就欺负她」这一套,揪辫子、放虫子等等,这样的路数当然也是一种追女孩的模式,我们可以叫它「放荡不羁欲情故纵模式」。

大家可能有点感悟了,其实所谓的模式,指的就是解决某种特定的问题的解决方案。那么回到代码开发中来,所谓的设计模式,指的就是在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案

你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

敲黑板咯,大家注意,是简洁而优雅的解决方案,为了追女孩趴人家墙头偷窥可不是什么好的模式,不被人当变态抓起来都算运气好。

简而言之,设计模式就是大家在码代码的时候,会碰到一些相似的高频的问题,最后发现用某种方法解决起来又轻便、性能又好,于是就给这种方法起了个名字而已。

所以我们学习设计模式,其实就是在学习这些前辈们早已实践过千遍万遍证明非常靠谱非常 Nice的编程方法而已

你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

设计模式通常都会有个响亮的名号,相信大家也了解不少:「装饰器模式」、「发布订阅模式」、「观察者模式」等等。

设计模式的名字很重要,更多的是为了沟通起来更方便、效率更高,比如我们在玩 LOL 的时候,如果上单的优势比较大,往往会采用「四一分推」的战斗方式,这个时候只要在对内交流的时候说一下「四一分推」,大家就都知道什么意思了,完全不需要完整的说出来:

我(上单)自己一个人带上路,你们四个抱团推中或下,别被单抓,对面来抓我的时候你们就推塔或者拿龙,不要绕地板。

这样可能还没打完字,仅有的优势就荡然无存了。

你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

三、为什么要学习设计模式?

在上面我们已经知道设计模式是前人经验的集合了,对设计模式做更深入的学习可以让我们站在「巨人」的肩膀上,走的更远。

尤其是当我们遇到一个问题的时候,我们冥冥中觉得这个问题出现的几率很高,说不定别人也遇到过这样的问题,并且已经整理好并且取了名字叫 XXX 模式,那么我们再回看一下设计模式也许问题就会迎刃而解了。

你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

设计模式往往会被一些人认为有些华而不实,并且明明用普通方法就能解决问题,反而使用设计模式后会增加额外代码,其实从某些角度来看虽然在实现的时候,设计模式确实有可能会多写一些代码,但是大家知道,我们在码代码的时候还要考虑代码的可复用性和可维护性的。

就像我们要把一些杂物放入空房间的时候,最简单的办法当然是直接一股脑的扔进去,但是随着东西越来越多,我们要找到某一个物品的时候往往会很麻烦。

那么我们在开始的时候如果选择去放一些柜子或者架子,其实可能是个更好的选择,那么柜子虽然会带来成本,但是可以在维护阶段带来更多的好处,那么使用柜子存放东西的规则,或许就是一种模式。

你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

四、告一段落

好了,那么我们已经了解了什么是设计模式以及为什么学习设计模式是必要的,请大家关注下一篇系列文章,感谢大家观看,比心ღ( ´・ᴗ・\` )比心。

哦,对了,今天刚学了个单词,比心 -> fingerheart分享给大家,哈哈哈哈。

你能看懂的 JavaScript 设计模式!(1)我看看怎么个事儿?

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
00_设计模式之语言选择
设计模式之语言选择设计模式简介背景设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
CoffeeCode
CoffeeCode
Lv1
平凡且认真的生活总会变得可爱。
文章
4
粉丝
0
获赞
0