![](https://img-blog.csdnimg.cn/20201206212630373.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
三分钟学JS设计模式
在平时写代码中,虽然没有正式学过一些设计模式,但是经过岁月的鞭笞后或多或少会有一些“奇技淫巧”。这些技巧你一直在做,但是却不知道原来这就是设计模式。实践中总结出来的经验,那么经验也可以指导我们实践。这里这里简单分享自己的理解,让你三分钟了解这个设计模式。
小笼包是馒头
这个作者很懒,什么都没留下…
展开
-
三分钟学JS设计模式(十)享元模式
享元模式一、定义享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。举个栗子:有两种食物容器:杯子和碗,假如碗只能装米饭、杯子只能装饮料。有10碗的米饭和10杯的饮料。正常情况装这些食物需要10个碗和10个杯子,为了少洗碗(系统资源有限)可以重复用这些餐具,这时候最少只需要1个碗和1个杯子。这就是享元模式。二、 场景数据库连接:多次操作同一个数据库数据不需要多次创建数据库连接对象,只需创建一个,然后重复使用。三、代码举例node连接mong原创 2021-01-14 15:31:04 · 90 阅读 · 1 评论 -
三分钟学JS设计模式(九)组合模式
桥接模式一、什么是桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。举个栗子:老王要做两件事,一是脚踏车,接送孩子。二是买菜,同样是脚踏车,运输菜。很明显,脚踏车这个提供动力的行为可以抽象化,而具体任务是:接送小王和运输菜。于是给自行车加了电机,把提供动力任务交给电机,自己只需要关注具体实现:接送孩子、运输菜。二、 优缺点优点:1、抽象化与实现化解耦,隐藏实现细节,只原创 2020-12-22 23:09:23 · 240 阅读 · 1 评论 -
三分钟学JS设计模式(番外一)观察者模式与发布-订阅模式
观察者模式与发布-订阅模式一、定义观察者模式(Observer),当一个对象被修改时,则会自动通知依赖它的对象。发布订阅模式(Pub-Sub Pattern):二、 优缺点三、场景例子、代码实现模拟公众号订阅行为// 【公众号订阅器】const Observer = function () { // 订阅者信息 this.listeners = [];};// 订阅操作,返回取消当前订阅的方法Observer.prototype.subscribe = functio原创 2020-12-21 10:11:40 · 187 阅读 · 0 评论 -
三分钟学JS设计模式(八)桥接模式
桥接模式一、什么是桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。举个栗子:老王要做两件事,一是脚踏车,接送孩子。二是买菜,同样是脚踏车,运输菜。很明显,脚踏车这个提供动力的行为可以抽象化,而具体任务是:接送小王和运输菜。于是给自行车加了电机,把提供动力任务交给电机,自己只需要关注具体实现:接送孩子、运输菜。二、 优缺点优点:1、抽象化与实现化解耦,隐藏实现细节,只原创 2020-12-15 10:02:52 · 129 阅读 · 0 评论 -
三分钟学JS设计模式(七)外观模式
外观模式一、什么是外观模式外观模式(Facade Pattern)隐藏系统、接口复杂复杂性,并向客户端提供了一个客户端可以访问系统的接口。举个栗子:小王是个小孩子,想学骑自行车。但是普通自行车在前进的过程中还要保持左右平衡(系统、接口复杂),老王给装了辅助小轮(外观模式加持),这样加装的自行车就更容易使用了,小王就只管前进,再也不怕摔倒了。二、 优缺点优点:1、简化复杂接口;2、解耦,屏蔽对原系统的直接访问,提高了安全性。缺点:1、不够灵活需要新功能的时候需要对原有的外观模式原创 2020-12-15 09:30:45 · 177 阅读 · 3 评论 -
三分钟学JS设计模式(六)适配器模式
适配器模式一、什么是适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。举个栗子:美国的电压是110V,自己的手机是220V。买个适配器,手机就能用了。二、 优缺点优点:提高代码可复用性:旧的模块接口不支持新的功能,加一层适配就能复用。灵活性好:不影响原接口,不影响被适配的模块缺点:过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现。[菜鸟教程]三、场景例子、代原创 2020-12-09 10:48:19 · 150 阅读 · 0 评论 -
三分钟学JS设计模式(五)代理模式
代理模式一、什么是代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。举个栗子:我们上饱了么点外卖的时候商家做外卖并不是直接送的,而是把外卖给了骑手(代理)送到你的手中,你和商家是没有直接接触的。骑手代理你的外卖期间可以做很多事情比如偷吃你一根香肠。二、 优缺点优点:1、隔离作用:如上栗子,商家跟客户直接隔着骑手(代理),客户只能吃商家的外卖,并不能因为难吃殴打老板。因为骑手只代理送外卖业务,并不负责打人。2、高扩展性;商家可以让骑手代理送,可以让美团骑手送原创 2020-12-08 20:09:18 · 124 阅读 · 0 评论 -
三分钟学JS设计模式(四)工厂模式
工厂模式一、什么是工厂模式工厂模式(Factory Pattern)是最常用的设计模式之一。创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。举个栗子:老王开了家马铃薯加工厂。有一天对负责人说:我要生产薯片,于是工厂生产出薯片。第二天,对负责人说:我要吃薯条,于是生产出薯条。期间老王根本不用知道工厂怎么生产,只需要说要什么。这就是工厂模式。二、 优缺点优点:1、简单易用:调用者只需要知道名称就能创建对应的对象,调用者只关心接口,实现逻辑都在工厂里面。2、可原创 2020-12-08 18:46:12 · 200 阅读 · 5 评论 -
三分钟学JS设计模式(三)单例模式
单例模式一、什么是单例模式单例模式(Singleton Pattern)是最简单的设计模式之一:一个单一的类,负责创建自己的对象,同时提供一个方法直接获取唯一的实例。其中当第一次获取这个对象的时候才实例化这个对象,叫做懒汉模式,反之如果代码代码一加载就实例化一个对象叫做饿汉模式举个栗子:老王生活所迫,开上了滴滴。早上八点开启接单模式,当接到单后才启动车子(实例化对象),这个叫懒汉模式。如果早上开启接单的时候就启动车子,这个就叫饿汉模式。在JS中我们还能拓展到对DOM对象的处理,如Loading效果。原创 2020-12-08 10:06:58 · 87 阅读 · 0 评论 -
三分钟学JS设计模式(二)观察者模式
观察者模式一、什么是观察者模式观察者模式(Observer),又叫订阅模式,当一个对象被修改时,则会自动通知依赖它的对象。举个栗子:老王和小李都关注(订阅、subscribe)了XX公众号,公众号有新内容的时候会自动通知(notify)到所有关注者,此时老王和小李都会收到消息。不喜欢的时候去掉订阅就不会再收到消息了。二、 优缺点优点:1、有一套触发机制。2、观察者和被观察者是抽象耦合的(两者的关联仅有订阅和通知两种行为)。缺点:1、被观察者有很多观察者会有很多,通知到所有的原创 2020-12-07 10:51:11 · 133 阅读 · 0 评论 -
三分钟学JS设计模式(一)修饰器模式
装饰器(修饰)模式一、什么是装饰(修饰)模式装饰器(Decorator):动态地给一个对象添加一些额外的职责。打个比方:老王是个勤奋的打工人,工作日穿上格子衫在办公室里面当程序员,周末黄袍加身当上美团配送员,每天晚上回家穿上睡衣都会看动漫。这边老王就是一个纯粹的人,格子衫、黄袍、睡衣是能给他不同的工作属性,哪天内裤外穿就能当超人了。改变老王的属性只需要给他穿不同的衣服(修饰器),就能有不同的功能二、 优缺点优点:装饰器与被装饰的组件功能独立,降低耦合度,拆卸、组装自由。缺点:多个装饰器嵌套出问原创 2020-12-06 21:51:37 · 450 阅读 · 0 评论