Javascript工厂的原始方式
因为对象的
属性可以在
创建对象后动态定义,它将在Javascript首次引入时编写以下代码。
复制代码代码如下所示:
无功控=新的对象;
ocar.color =蓝色;
ocar.doors = 4;
ocar.mpg = 25;
ocar.showcolor =
函数(){
警戒(这个颜色);
};
在上面的代码中,创建对象的车,然后给它一些属性:它的颜色是蓝色的,有四个门,一加仑油能跑25英里,最后一个属性实际上是一个函数指针,这意味着该属性是一个
方法,这段代码被
执行后,你可以使用对象的车。但这里有个问题,那就是,你可能需要创建多车的
情况下,这显然不是一个好办法。
解决方案:工厂方法
为了解决这个问题,开发人员创建工厂的
功能,可以创建并返回一个特定
类型的对象,例如,createcar()函数可用于封装创建上述汽车对象的
操作:
复制代码代码如下所示:
功能createcar(scolor,idoors,停){
无功otempcar =新的对象;
otempcar.color = scolor;
otempcar.doors = idoors;
otempcar.mpg =问题;
otempcar.showcolor =函数(){
警戒(这个颜色);
};
返回otempcar;
}
无功ocar1 = createcar(红
无功ocar2 = createcar(蓝
ocar1.showcolor(红色); / /输出
OCar2.showColor (blue); / / output
调用这个工厂函数会创建一个新的对象并给它所有必要的属性,并对createcar添加
参数()函数来指定颜色,门窗的汽车对象MPG属性来创建。这使得两个对象具有相同的属性,但具有不同的属性值。这个方法不好的事情是,每当一辆车对象创建时,即称createcar功能一次,它将创建
显示颜色对话框的方法为每个对象的反复,这是没有必要的时刻,但事实上,每一个对象都将共享相同的功能。所以我们尽量申报方法
性能的功能外。
工厂功能外定义对象的方法
一些开发人员定义了工厂功能之外的对象的方法,然后通过属性指向方法以避免这个问题:
复制代码代码如下所示:
功能显示颜色对话框(){
警戒(这个颜色);
}
功能createcar(scolor,idoors,停){
无功otempcar =新的对象;
otempcar.color = scolor;
otempcar.doors = idoors;
otempcar.mpg =问题;
otempcar.showcolor =显示颜色对话框;
返回otempcar;
}
无功ocar1 = createcar(红
无功ocar2 = createcar(蓝
ocar1.showcolor(红色); / /输出
ocar2.showcolor(蓝色); / /输出
在上面的改写代码,功能显示颜色对话框()函数定义之前createcar()。在createcar(),对象是给定一个指针的存在显示颜色对话框()函数。在功能上,这解决了重复一个函数对象的创建问题;但语义、功能不一样一个对象的方法。