Skip to content

jiang-bx/designMode

Repository files navigation

多态

  • 含义:

    • 同一操作用与不同的对象上面, 可以产生不同的解释和不同的执行结果

    • 多态背后的思想是将 '做什么' 和 '谁去做以及怎么去做' 分离开来

    • 也就是将 '不变的事物' 与 '可能改变的事物' 分离开来

    • 把不变得部分隔离开来, 把可变的部分封装起来. 符合 开放-封闭的原则.

原型编程

  • 原则:

    • 所有的数据都是对象

    • 要得到一个对象, 不是通过实例化类. 而是找到一个对象作为原型并克隆他

    • 对象会记住他的原型

    • 如果对象无法响应某个请求, 它会把这个请求委托给他自己的原型

this call apply

  • this

    • this 的指向问题
  • call 和 apply

    • 就是让一个对象, 去借用另一个对象上的方法
  • bind

闭包

高阶函数

  • 详情见./chapter03/03.js

  • AOP (面向切面编程)

  • 函数科里化(currying)

    • 一个 currying 的函数首先会接受一些参数, 接受这些参数之后, 该函数并不会立即求值, 而是继续返回另外一个函数, 刚才传入的函数形成的闭包中被保存起来, 待到函数被正真需要求值的时候, 之前传入的所有参数都会被一次性用于函数求值.
  • 函数节流

    • 解决函数被触发的频率太高, 限制同一个函数被频繁调用
  • 惰性加载函数

    • 每次进去分支判断时, 重写原函数

单例模式

  • 定义: 保证一个类仅有一个实例, 并且提供一个访问它的全局变量

  • 核心: 就是 确保只有一个实例, 并提供全局访问

  • 惰性单例: 在需要的时候才创建对象实例

  • 详情见./chapter04/04.js

策略模式

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

  • 一个基于策略模式的程序至少由两部分组成.

    • 策略组类, 策略类封装了具体的算法, 并且负责具体的计算过程

    • 环境组类, 环境类接受客户的请求,随后将请求委托给某一个策略类

  • 详情见./chapter05/05.js

代理模式

迭代器模式

  • 定义: 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不需要暴露该对象的内部表示

  • 详情见./chapter07/07.js

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

  • 定义: 定义对象间的一种一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象都将得到通知

  • 详情见./chapter08/08.js

命令模式

  • 定义: 指的是一个执行某些特定事情的指令.

  • 在javascript中, 函数作为一等对象. 所以 命令模式其实是回调函数的一个面向对象的替代品

  • 详情见./chapter09/09.js

组合模式

  • 定义: 组合模式是将对象组合成树形结构, 以表示 "部分-整体" 的层次结构, 再者, 利用对象的多态性统一对待组合对象和单个对象.

  • 详情见./chapter10/10.js

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published