组合模式所要解决的问题:可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象。客户端代码必须区别对象简单对象和容器对象,而实际上大多数情况下用户认为它们是一样的。对这些类区别使用,使得程序更加复杂。递归使用的时候跟...
分类:
编程语言 时间:
2015-01-19 20:47:16
阅读次数:
169
在可扩展JavaScript的世界里,假设我们说一个应用程序是模块化(modular)的,那么通常意味着它是由一系列存储于模块中的高度解耦,不同的功能片段组成。在可能的情况下,通过一处依赖性,松耦合能够使应用程序的可维护性更加简单。 假设有效地实现了这点,就非常easy地了解一部分怎样影响还有一个部...
分类:
编程语言 时间:
2015-01-17 20:46:43
阅读次数:
199
链式调用(function(){ function _$(els){ //... } _$.prototype={ each:function(fn){ for(var i=0,len=this.elements.length;i<...
分类:
编程语言 时间:
2015-01-16 01:02:04
阅读次数:
215
在系统中,某些类由于自身逻辑,具有两个或两个以上维度的变化,如何使得该类型可以沿多个方向变化,但又不引入额外的复杂度,这就是桥接模式要解决的问题。 定义:桥接模式(Bridge),将抽象部分与它的实现部分分离,使他们可以独立的变化。 意图:将抽象与实现解耦。 对于前端,比较常用的场景,是事件监控:....
分类:
编程语言 时间:
2015-01-15 20:16:53
阅读次数:
295
单体模式:用来划分命名空间而组织一些方法和属性的对象,如果它能被实例化,只能被实例化一次;但对象不是单体var Singleton={ attr1:true; attr2:2, method1:function(){ ... }, method2:func...
分类:
编程语言 时间:
2015-01-13 23:01:36
阅读次数:
253
简单工厂模式:使用一个类来生成实例。复杂工厂模式:使用子类来决定一个成员变量应该是哪个具体的类的实例。简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口。通过工厂,可以取得需要的实例。逻辑示意图:下面列举了一个例子:var Coffee = function(){...
分类:
编程语言 时间:
2015-01-13 21:10:56
阅读次数:
183
在C#中,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,会提供一个静态方法,通过该静态方法可以取得唯一实例。这就确保了一个类只有一个实例对象:public class Singleton{ private static Sing...
分类:
编程语言 时间:
2015-01-12 20:45:10
阅读次数:
131
子类引用父类function extend(subClass,superClass){ var F=function(){}; F.prototype=superClass.prototype; subClass.prototype=new F(); subClass.pro...
分类:
编程语言 时间:
2015-01-10 19:46:22
阅读次数:
187
静态成员是直接通过类对象访问的var Book=(function(){ var numOfBooks=0; function checkIsbn(isbn){ ... } return function(newIsbn,newTitle,newAuthor){...
分类:
编程语言 时间:
2015-01-09 06:58:30
阅读次数:
157
门户大开式对象var Book=function(isbn,title,author){ if (isbn==undefined) throw new Error("不合法"); this.isbn=isbn; this.title=title||'无标题'; this.au...
分类:
编程语言 时间:
2015-01-07 23:29:35
阅读次数:
182