javascript工厂模式

工厂模式

设计工厂模式的目的是为了创建对象。它通常在类或者类的静态方法实现,具有下列目标:
1.在创建相似对象是执行重复操作
2.在编译时不知道具体类型(类)的情况下,为工厂客户提供一种创建对象的接口。
通过工厂方法(或类)创建的对象在设计上都继承了相同的父对象这个思想,它们都是实现专门功能的特定子类。有时候公共父类是一个包含了工厂方法的同一个类、

代码:

//父构造函数
function CarMaker(){};

CarMaker.prototype.drive = function(){
    return ‘Vroom, I have ‘ + this.doors +‘ doors‘;
};
//静态工厂方法
CarMaker.factory = function(type){
    var constr = type,
        newcar;

    //如果构造函数不存在,则发生错误
    if(typeof CarMaker[constr] !== ‘function‘){
        throw{
            name : ‘Error‘,
            message : constr + "doesn‘t exist"
        }
    }

    //使得原型继承父类,但仅继承一次
    if(typeof CarMaker[constr].prototype.drive !== ‘function‘){
        CarMaker[constr].prototype = new CarMaker();
    }

    //创建一个新的实例
    newcar = new CarMaker[constr]();

    //可选择性的调用一些方法然后返回....
    return newcar;
};
//定义特定的汽车制作商
CarMaker.Compact = function(){
    this.doors = 4;
}
CarMaker.Convertible = function(){
    this.doors = 2;
};
CarMaker.SUV = function(){
    this.doors = 24;
};

var corolla = CarMaker.factory(‘Compact‘);
var solstice = CarMaker.factory(‘Convertible‘);
var cherokee = CarMaker.factory(‘SUV‘);
console.log( corolla.drive() );  //结果为‘Vroom, I have 4 doors‘
console.log( solstice.drive() ); //结果为‘Vroom, I have 2 doors‘
console.log( cherokee.drive() ); //结果为‘Vroom, I have 24 doors‘

javascript工厂模式

时间: 2024-11-10 15:25:42

javascript工厂模式的相关文章

javascript工厂模式和构造函数模式创建对象

一.工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程(本书后面还将讨论其他设计模式及其在JavaScript 中的实现).考虑到在ECMAScript 中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节,如下面的例子所示. function createPerson(name, age, job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.s

javascript 工厂模式

声明一个js对象, var box1=new Object();box2.name1='123';box2.age=100;box2.run=function(){ return this.box2.name1; } //再次声明一个对象 var box2=new Object();box.name1='Lee';box.age=100;box.run=function(){return this.name;+'运行中'; } //为了解决多个类似声明的问题我们可以用一种叫做工厂模式的方法,//

javascript工厂模式、单例模式

//工厂模式 function createObject(name,age){ var obj = new Object(); obj.name = name; obj.age = age; obj.fun = function(){ return this.name + this.age +"一个方法"; } return obj; } var box1 = createObject("box1",1); var box2 = createObject("

javascript——工厂模式创建对象

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta http-equiv="Content-Type"

javascript工厂模式和构造方法

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

[设计模式] javascript 之 抽象工厂模式

抽象工厂模式说明 1. 工厂方法模式的问题: 在工厂方法模式里,创建类都需要通过 工厂类,如果要扩展程序,就必须修改工厂类,这违背了闭包原则,对扩展开放,对修改关闭:对于设计有一定的问题. 2. 如何解决:就要用到抽象工厂模式,就是对功能类单独创建工厂类,这样就不必修改之前的代码,又扩展了功能. 3. 工厂模式其实就是对 实现同一接口的 实现类 的 统一 工厂方式创建调用,但 javascript 没有接口这号东西,所以就去掉这一层 实现,但位功能类的成员及方法都应当一样; 抽象工厂源码例子 1

JavaScript高级---工厂模式设计

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <ti

javascript 简单工厂模式

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 var Bicycle = new Interface("Bicycle",[

JavaScript设计模式一:工厂模式和构造器模式

转自:http://segmentfault.com/a/1190000002525792 什么是模式 前阵子准备期末考试,挺累也挺忙的,实在闲不得空来更新文章,今天和大家说说javascript中的设计模式. 首先呢,我们需要知道的是:模式是一种可复用的解决方案,而反模式呢就是针对某个问题的不良解决方案. js反模式常见例子 向setTimeout和setInterval传递字符串,而不是函数,这会触发eval()的内部使用. 在全局上下文中定义大量的变量污染全局命名空间 修改Object类的