JavaScript观察者模式 观察者模式:是一对多的模式,当订阅到某个对象上,当该对象改变时,将会通知所有依赖它的对象。 在js中,很多都是观察者模式,比如事件的click,先在某个元素上注册一个onclick事件,但并不知道该click事件什么时候会触发,待等到用户触发的时候再执行函数。类似的,在node中Events事件也是观察者模式,emit触发某个事件,然后再on事件中就会收到事件触发的信息。 观察者模式可以替代异步的 2017-12-22 JS-设计模式
JavaScript代理模式 代理模式:当某个接口或者对象不满足我们的需求时,再重新定义一个对象来满足需求,重新定义的对象然后访问本体对象。 在代码中我们经常会遇到,如果某个ajax请求已经请求过了,那么将该api返回的数据结果缓存起来,那么下次再次请求该api,则会先从缓存中查找是否有该值,如果有,则返回,否则请求。这种情况提供的缓存逻辑,也属于代理模式。 通常我们也会遇到监听window上的scroll事件,当用户滚动鼠标 2017-12-22 JS-设计模式
JavaScript适配器模式 适配器模式:是为了解决2个软件中由于接口不兼容的问题。 比如在现实生活中最常见的就是去国外,需要带转换插头,转换电压。在代码中,最常见的是当调用某个接口,返回的数据并不是我们想要的格式,一般我们不太可能去修改原有的接口,一是风险太大,不知道有没有别的地方使用,二是增加了工作量,修改原有的代码需将原先的代码逻辑理清并且保证不会产生regression的错误。 例如: 1234567891011121 2017-12-21 JS-设计模式
JavaScript状态模式 状态模式:将对应的状态信息和状态变化保存在各自的类中,在主控制的类中,只需对所有的状态进行初始化即可,这样可一眼在构造函数中看出有多少种状态变化,避免了在主类中编写过多的if, else 条件语句来控制状态的变化,同时符合了代码的开放-封闭原则。 那么什么是状态?状态在日常生活中很常见,比如看电视时遥控器的按钮对应着暂停和播放,第一次按下按钮暂停,再按下即播放。暂停和播放就是相应的状态。 最近买了 2017-12-21 JS-设计模式
JavaScript策略模式 策略模式:将一些相同的逻辑状态抽离并封装起来,这些逻辑之间的关系是平等的,可替换的。 什么是策略?比如:去某个地方旅游,你可以乘火车,可以乘飞机,也可以乘游轮,那么这些交通工具的选择之间就是某种策略,可以看出这些策略之间是可以相互替换的。 和状态模式的区别?状态模式中每个状态之间其实不是平等的,可替换的,而是相互之间有着联系。 举例:比如商家为了促销,设置了抽奖,比如抽了一等奖兑换一个iPhone 2017-12-21 JS-设计模式