再一次,javascript设计模式与开发实践-中介者模式

简述

解除对象与对象之间的紧耦合关系。

当飞机想要降落时,会通知指挥塔,指挥塔安排降落,而不必和其他飞机通信,来保证安全。
购买足球彩票,只需要把钱交给博彩公司,博彩公司负责收钱和发钱,而不必与其他人交换信息。

使用场景

  • 游戏
  • 购物订单
  • ..

案例

如果要写一个购物订单程序,使用中介者模式是个很好的方式。

阅读全文

再一次,javascript设计模式与开发实践-职责链模式

简述

使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,这些对象连成一条链,并沿着链条传递该请求,直到有对象处理它为止。

例如高峰期搭公交,上车后没办法刷卡,只好把羊城通往前传递,经过几个人传递,最终才刷到卡。
例如上课时传纸条,同学间帮忙传递,最终送到要送到的人手上。

使用场景

  • 兼容判断
  • 订单优惠
  • ..

案例

我们负责的电商网站购买有一些优惠。

  • 支付500元定金得到100元优惠券。
  • 支付200元定金得到50元优惠券。
  • 不支付定金,无优惠。

阅读全文

再一次,javascript设计模式与开发实践-享元模式

简述

一种优化性能的模式,享元的核心是运用共享技术来有效支持大量细粒度的对象。

假设服装工厂有50种款式的衣服,为了推销产品工厂决定请模特来穿服装拍摄,在现实中不会请50名模特来试穿,所以在程序中享元模式指的就是这种情况。

使用场景

  • 地图图钉
  • 标签页
  • ..

案例

阅读全文

再一次,javascript设计模式与开发实践-模板模式

简述

一种典型的通过封装变化来提高可扩展性的模式。

模板模式由两个部分组成,一个抽象父类,一个具体子类,通常父类中封装了子类可用的公共实现,子类通过继承父类,也就继承了整个父类的实现,那么模板模式可以重写方法,或者直接重写父类方法。

使用场景

  • 过程类似,方式一致的

案例

阅读全文

再一次,javascript设计模式与开发实践-命令模式

简述

将函数的调用、请求和操作封装成一个单一的对象,然后对这个对象进行一系列的处理。

最常见的场景是:有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。
此时希望用一种松耦合的方式来设计程序,那么用命令模式来消除两者的耦合关系。

使用场景

  • 编辑器
  • 操作记录
  • ..

案例

阅读全文

再一次,javascript设计模式与开发实践-策略模式

简述

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

在现实中要去一个地方,可以选择坐飞机、火车、骑自行车。
在程序设计中,也有类似的情况,例如压缩文件,可以选择zip算法,也可以选择gzip算法。

任意替换一种方式,目的不变就是策略模式。

使用场景

  • 算法
  • 表单验证
  • 运动动画

案例

阅读全文