摘要:
Builder模式:程序的主体是稳定的,构建程序的部分变化相对剧烈。将一个复杂对象的结构与表示分离。结构图://builder/// /// 一个构建House的builder类,假设所有的房子都是由墙,门,窗,地板,屋顶 构成。/// 这个地方相对稳定,抽象出构建房子的接口/// public abstract class HouseBuilder{ public abstract void createWall(); public abstract void createDoor(); public abstract void createWindow(); pub... 阅读全文
摘要:
抽象工厂模式:提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。{创建型模式}抽象工厂模式以一种倾斜的方式支持增加,可以很容易的增加产品族,但是不能为增加产品等级结构提供方便。[如下图,我们可以很容易的纵向的系统,但是添加横向的控件确不易]实现代码如下:namespace AbstractN{ //AbstractFactory abstract public class ViewFactory { abstract public Button makeButton(); abstract public TextBox makeTextBox(); } // 阅读全文
摘要:
以往写代码仅仅是为了实现特定的功能,后期维护或别人重用的时候,困难很大。Javascript作为完全面向对象的语言,要写出最优的代码,需要理解对象是如何工作的。1. 对象是javascript的基础,对象是一系列属性的集合,类似其他语言的散列表。如下两个创建对象,并实现属性的例子是相同的。var obj = new Object(); //给对象Obj设置一系列的属性 obj.name = "rxm"; obj.getAge = function() { return (new Date()).getFullYear() - 1986; }; //------------- 阅读全文
摘要:
在javascript中,代码总有一个上下文对象(即:代码属于哪个对象)。上下文对象是通过this实现的,这个变量永远指向当前代码所处的对象中。全局对象其实是window对象的属性。例:下面这个例子运行的时候是会报错的。上下文对象是很容易出问题的,还好我们有call和apply. 和constructor一样,call,apply是Function.prototype的方法。每个Function实例都有的。区分apply,call就一句话, foo.call(this,arg1,arg2,arg3)==foo.apply(this,arguments补救:var main = document 阅读全文
摘要:
闭包:闭包本质上就是函数内部和函数外部架起的一座桥梁。闭包是能够读取其他函数作用域内的变量的函数,由于变量是由作用域范围的,要读取其他作用域范围的变量,需理解javascript的“链式作用域结构”,子对象一级一级的向上寻找父作用域对象。一个小例子:function f1() { var n = 99; function f2() { return n; } return f2; } var result = f1(); alert(result()); //比如这个例子:在f1外部是没办法访问n变量的。但是f1内部的函数f2却可以做到; //那么我们可以让f1函数返回f2函数,通过f2可以在 阅读全文
摘要:
在Javascript中,作用域是由函数划分的不是块{while,for,if}划分的,写惯了C#,C++的代码后,这块要注意! [需注意:for循环是无法创建本地上下文的。独立的作用域只有通过函数代码才能创建出来]//虽然for循环结束了,但是K依然有效 阅读全文
摘要:
函数重载要依赖于两点:判断传入参数数量的能力和判断传入参数类型的能力。JS函数的参数列表,参数仅在函数内有效。参数列表是一个伪数组,可以访问其中的元素,具有.length属性,但是不能push()。 阅读全文
摘要:
阅读全文
摘要:
在下面的例子中可以找到强类型语言中所描述的类,属性,方法,对象。this出现在构造函数中,更多的是表示一种特有的属性;prototype主要用于拓展函数的属性,方法。在函数类实例化的时候,this的属性需要复制相应的副本,prototype不用。 阅读全文
摘要:
创建型模式:主要聚焦于对象是如何创建的。单例模式,在任何情况下,只允许有一个对象的实例。1. 单线程下的单例模式:public classSingletonTest { private static SingletonTest instance; private SingletonTest() { } public static SingletonTest Instance { get { if (instance == null) { instance = newSingletonTest(); } return instance; } }}2. 多线程情况下的单例模式:public cla 阅读全文