andy Wong's Blog

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


  • 首页

  • 归档

  • 标签

  • 分类

  • 关于

js设计模式-状态模式

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

状态模式的基础

定义:状态模式(State)定义一个对象,这个对象可以通过管理其状态从而使得应用程序作出相应的变化。
状态模式是一个非常常用的设计模式,它主要有两个角色组成:
(1)环境类:拥有一个状态成员,可以修改其状态并作出相应反应。
(2)状态类:表示一种状态,包含其相应的处理方法
作用:状态模式就是一种适合多种状态场景下的设计模式。使用状态模式可以让代码更加清晰,提高应用程序的维护性和扩展性。
使用场景:文件下载(开始、暂停、完成、失败等)、红绿灯

阅读全文 »

js设计模式-职责链模式

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

职责链模式的基础

定义:职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。职责链模式的名字非常形象,一系列可能会处理请求的对象被该连接成一条链,请求在这些对象之间依次传递,直到遇到一个可以处理它的对象,我们把这些对象成为链中的节点。
优点:请求发送者只需要知道链中的第一个节点,从而弱化了发送者和一组接收者之间的强联系。

使用场景:挤公交车递钱(只有售票员可以收钱)、交押金预定手机

阅读全文 »

js设计模式-备忘录模式

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

备忘录模式的基础

定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态
作用:在我们的开发中偶尔会遇到这样一种情况,需要对用户的行为进行撤销。要想实现撤销,首先需要保存软件系统的历史状态,当用户执行撤销时用之前的状态覆盖当前状态。本节介绍的备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便的回到一个特定的历史步骤。备忘录模式在js中经常用于数据缓存。
使用场景:分页控件、撤销组件

阅读全文 »

js设计模式-组合模式

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

组合模式的基础

定义:组合模式(Composite)将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。
作用:组合模式让你可以优化处理递归或分级数据结构。
使用场景:系统目录结构、网站导航结构、文件扫描、DOM的机制,一个DOM节点可以包含子节点,不管是父节点还是子节点都有添加、删除、遍历子节点的通用功能。
该模式由两部分构成:
1.子对象(Leaf):组成组合对象的最基本对象。
2.组合对象(Composite):由子对象组合起来的复杂对象。

阅读全文 »

js设计模式-模板方法模式

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

模版方法模式

定义:模板方法模式由二部分组成,第一部分是抽象父类,第二部分是具体实现的子类,一般的情况下是抽象父类封装了子类的算法框架,包括实现一些公共方法及封装子类中所有方法的执行顺序,子类可以继承这个父类,并且可以在子类中重写父类的方法,从而实现自己的业务逻辑。
使用场景:(主要用于步骤相似的事情)

  1. 泡饮品(茶 和 coffee)
  2. 公司面试
    阅读全文 »

js设计模式-访问者模式

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

访问者模式定义

介绍:访问者模式比较复杂,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对他们进行不同的访问操作。访问者模式的主要目的是将数据结构与数据操作相分离。

定义:提供一个作用于某对象结构中的个元素的操作表示,它使得可以再不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式

在访问者模式中,主要包括以下几个角色

  1. 抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的。
  2. 访问者:实现抽象访问者所声明的方法,它影响到访问者访问到一个类后该干什么,要做什么事情。
  3. 抽象元素类:接口或者抽象类,声明接受哪一类访问者访问,程序上是通过accept方法中的参数来定义的。抽象元素一般有两类方法,一部分是本身的业务逻辑,另外就是允许接收哪类访问者来访问。
  4. 元素类:实现抽象元素类所声明的accept方法,通常都是visitor.visit(this),基本上已经形成一种定式了。
  5. 结构对象:一个元素的容器,一般包含一个容纳多个不同类、不同接口的容器,如List、Set、Map等,在项目中一般很少抽象出这个角色。
    阅读全文 »
1…678…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