andy Wong's Blog

知道的越多,不知道的越多


  • 首页

  • 归档

  • 标签

  • 分类

  • 关于

js设计模式-代理模式

发表于 2018-10-31 | 分类于 JavaScript

代理模式

定义:为一个对象提供一个代用品或占位符,以便控制对它的访问。
代理对象和本体对象实现了同样的接口,并且会把任何方法调用传递给本体对象;
举例:
图片预加载、图片懒加载、
合并HTTP请求(代理收集一定时间内的所有HTTP请求,然后一次性发给服务器)、
惰性加载(通过代理处理和收集一些基本操作,然后仅在真正需要本体的时候才加载本体)、
缓存代理(缓存请求结果、计算结果)

阅读全文 »

js设计模式-发布订阅模式

发表于 2018-10-31 | 分类于 JavaScript

发布-订阅模式(观察者模式)

定义:对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时,所有依赖于它的对象都将得到通知。

现实生活中的发布-订阅模式

比如小红最近在淘宝网上看上一双鞋子,但是呢 联系到卖家后,才发现这双鞋卖光了,但是小红对这双鞋又非常喜欢,所以呢联系卖家,问卖家什么时候有货,卖家告诉她,要等一个星期后才有货,卖家告诉小红,要是你喜欢的话,你可以收藏我们的店铺,等有货的时候再通知你,所以小红收藏了此店铺,但与此同时,小明,小花等也喜欢这双鞋,也收藏了该店铺;等来货的时候就依次会通知他们。在上面的故事中,可以看出是一个典型的发布订阅模式,卖家是属于发布者,小红,小明等属于订阅者,订阅该店铺,卖家作为发布者,当鞋子到了的时候,会依次通知小明,小红等,依次使用旺旺等工具给他们发布消息。

阅读全文 »

js设计模式-策略模式

发表于 2018-10-31 | 分类于 JavaScript

策略模式

定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
举例:计算年终奖(工资、效绩),表单效验(是否为空、长度、手机号、邮箱等等)

比如公司的年终奖是根据员工的工资和绩效来考核的,绩效为A的人,年终奖为工资的4倍,
绩效为B的人,年终奖为工资的3倍,绩效为C的人,年终奖为工资的2倍;

阅读全文 »

js设计模式-单例模式

发表于 2018-10-31 | 分类于 JavaScript

单例模式

单例模式,从名字拆分来看,单指的是一个,例是实例,意思是说多次通过某个类创造出来实例始终只返回同一个实例,它限制一个类只能有一个实例。单例模式主要是为了解决对象的创建问题。单例模式的特点:

  1. 一个类只有一个实例
  2. 对外提供唯一的访问接口

在一些以类为核心的语言中,例如java,每创建一个对象就必须先定义一个类,对象是从类创建而来。js是一门无类(class-free)的语言,在js中创建对象的方法非常简单,不需要先定义类即可创建对象。

在js中,单例模式是一种常见的模式,例如浏览器中提供的window对象,处理数字的Math对象。

阅读全文 »

js设计模式-工厂模式

发表于 2018-10-31 | 分类于 JavaScript

什么时候使用工厂模式

  1. 对象的构建十分复杂
  2. 需要依赖具体环境创建不同实例
  3. 处理大量具有相同属性的小对象

定义:简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些类通常都拥有相同的接口(属性和方法)。
这里就以RPG中职业(战士、法师、射手)来做说明:

阅读全文 »

javaScript常用设计模式

发表于 2018-10-30 | 分类于 JavaScript

设计模式

设计模式,是一套经过前人总结、业务验证并适合于特定业务开发的代码组织方式,可能会有一些同学会认为设计模式没有用,我这里需要指出设计模式并不是万能的只适合于特定业务场景的开发(对我们的业务开发起到一定的指导作用,所有设计模式的目的都是让开发者编写可维护、易扩展的代码),其实你日常开发中或多或少都使用过设计模式,只是你不知道名字而已(如,绑定事件和触发事件这就是一个简单的发布-订阅模式)。

工厂模式(Factory)

定义:简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例通常都拥有相同的接口(属性和方法)。
举例:计算器(加、减、乘、除)、自行车售卖(山地、公路)、饮料机(咖啡、牛奶、水)、RPG中职业(战士、法师、射手)

单例模式(Singleton)

定义:单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象。
举例::模态框、登录控件、注销控件

阅读全文 »
1…8910…13
andy Wong

andy Wong

前端渣渣辉

78 日志
15 分类
23 标签
GitHub
推荐阅读
  • 掘金
  • segmentfault
  • Web前端导航
  • 印记中文
  • 阮一峰ES6书籍
Copyright © 2015 - 2021 Powered By - andy Wong
Theme by ©next
Hosted by Github Pages