摘要:
一、编程设计原则 1)单一职责原则(SRP): 这里的职责是指“引起变化的原因”;单一职责原则体现为:一个对象(方法)只做一件事。 事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原因违反SRP的情况并不少见,比如jQuery中的attr方法,既负责赋值,又负责取值。这对于jQue 阅读全文
摘要:
一、状态模式的定义 状态模式的关键是区分事务内部和外部的状态,事务内部状态改变往往会带来事务的行为改变。 状态模式中有意思的一点是,一般我们谈到封装,都是优先封装对象的行为,而非对象的状态。但在状态模式中刚好相反,状态模式的关键是把事务的每种状态都封装为单独的类,跟此种状态有关的行为都封装在这个类的 阅读全文
摘要:
一、装饰者模式定义 装饰者模式可以动态地给某个对象添加一些额外的职责,而不会影响从这个类中派生的其他对象。这种为对象动态添加职责的方式就称为装饰者模式。装饰者对象和它所装饰的对象拥有一致的接口,对于用户来说是透明的。 和java等语言不同的是,java的装饰器模式是给对象动态添加职责,javascr 阅读全文
摘要:
一、中介者模式的定义和应用场景 中介者模式的作用在于解除对象之间的紧耦合关系,增加一个中介者之后,所有对象都通过中介者来通信,而不是互相引用,当一个对象发生变化的时候,仅需要通知中介者即可。从而将网状的多对多关系转换为了简单的一对多关系。 中介者模式使得各个对象之间得以解耦,以中介者和对象之间一对多 阅读全文
摘要:
一、职责链的定义和使用场景 职责链模式的定义是,职责链模式将一系列可能会处理请求的对象连接成一条链,请求在这些对象之间一次传递,直到遇到一个可以处理它的对象。从而避免请求的发送者和接收者之间的耦合关系。 职责链模式的优点是:请求发送者只需要直到链中的第一个节点,从而解耦了发送者和一组接收者之间的强联 阅读全文
摘要:
一、享元模式的定义及使用场景 享元模式是为了解决性能问题而诞生的设计模式,这和大部分设计模式为了提高程序复用性的原因不太一样,如果系统中因为创建了大量类似对象而导致内存占用过高,享元模式就非常有用了。 享元模式的关键是区分内部状态和外部状态,剥离了外部状态的对象成为共享对象。有多少种内部状态的组合, 阅读全文
摘要:
一、组合模式定义及使用场景 组合模式将对象组合成树形结构,用以表示“部分—整体”的层次结构,除了用来表示树形结构之外,组合模式还可以利用对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性。 实现组合模式的关键: 在java等静态语言中,需要单个对象和组合对象都实现同样的抽象接口,对外提供 阅读全文
摘要:
一、命令模式使用场景及定义 命令模式常见的使用场景是:有时候需要向某些对象发送请求,但是并不知道请求的接受者是谁,也不知道请求的具体操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求的发送者和请求接受者可以解除彼此之间的耦合关系。 命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的 阅读全文
摘要:
一、发布订阅模式定义 jQuery中的callbacks,defered,promise本质上就是发布订阅模式的实现。ES6的promise内部实现未开源,不了解具体机制 发布订阅模式又叫做观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。 阅读全文
摘要:
一、迭代器模式定义 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,并且不需要暴露该对象的内部表示。 在当前大部分语言中,都已经内置了迭代器模式。迭代器有内部迭代器和外部迭代器之分,一般现有语言中实现的大多是内部迭代器。 二、jquery中的each实现 对于数组采用数字下标访问,防止原型链 阅读全文