模板方法模式

什么是模板方法模式

假如我们有一些平行的子类,各个子类之间有一些相同的行为,也有一些不同的行为。如果相同和不同的行为都混合在各个子类的实现中,说明这些相同的行为会在各个子类中重复出现。但实际上,相同的行为可以被搬到另外一个单一的地方,模板方法就是为解决这个问题而生的。

阅读全文〉

命令模式

什么是命令模式

命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。

调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

阅读全文〉

观察者模式

什么是观察者模式

具体写法: 使用Map将话题和要执行的回调方法一一对应的存下来,即订阅。在发布这个话题时,使用发布的参数,执行这个话题的回调方法。

订阅前发布: 在发布某个话题时,如果这个话题尚未被订阅,那么将这个话题存储起来,等订阅之后,立即发布。那么,在写代码时,就不会发生发布在订阅之前,导致功能不能被触发的问题。

阅读全文〉

迭代器模式

什么是迭代器模式

迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。

内部迭代器在调用的时候非常方便,外界不用关心迭代器内部的实现,跟迭代器的交互也仅仅是一次初始调用,但这也刚好是内部迭代器的缺点。

阅读全文〉

Redux

什么是Redux

  • 在Flux基础上的改进框架。
  • 单向数流。
  • 唯一数据源。
  • 保持状态只读。
  • 数据改变只能通过纯函数完成。
阅读全文〉

代理模式

什么是代理模式

代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。

代理和本体接口保持一致,那么用户可以放心的请求代理,他只关心是否得到想要的结果;在任何使用本体的地方都可以替换成使用代理。

虚拟代理:例如实现图片预加载、合并http请求。

缓存代理:例如缓存ajax异步请求的数据,下次再打开同一页的时候,便可以直接使用之前的数据。

阅读全文〉

策略模式

什么是策略模式

定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。

一个基于策略模式的程序至少由两部分组成。第一个部分是一组策略类,策略类封装了具体的算法,并负责具体的计算过程。第二个部分是环境类context,context接受客户的请求,随后把请求委托给某一个策略类。

策略模式可以消除程序中大片的条件分支语句。

阅读全文〉

单例模式

什么是单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

推荐使用惰性单例的方式创建,即在需要时才创建单例对象。并且需要把不变的部分隔离出来,把管理单例的逻辑和创建对象的逻辑分开,这两个方法可以独立变化而不互相影响。当它们连接在一起时,就完成了创建唯一实例对象的功能。

阅读全文〉

原型模式

什么是原型模式

类并不是必须的,对象未必需要从类中创建而来,一个对象是通过克隆另外一个对象所得到的。

原型模式不但是一种设计模式,也被称为一种编程泛型。

阅读全文〉