js工厂模式

设计工厂模式是为了创建对象。通常在类或者类的静态方法中实现,具有两个目标。其中一个是:当创建相似对象时执行重复操作:

另外一个目标是:编译时不知道具体类型(类)的情况下,为工厂客户提供一种创建对象的接口。

实现如下:

//父构造器
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 exit"
        };
    }
    //使得原型继承父类,仅继承了一次
    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 = 1;
};
CarMaker.SUV = function(){
    this.doors = 17;
};//test
var compact = CarMaker.factory("Compact");
var convertible = CarMaker.factory("Convertible");
var suv = CarMaker.factory("SUV");
console.log(compact.drive()); //Vroom, I have 4 doors
console.log(convertible.drive()); //Vroom, I have 1 doors
console.log(suv.drive()); //Vroom, I have 17 doors
时间: 2024-10-10 05:33:27

js工厂模式的相关文章

js 工厂模式简要介绍

什么是工厂模式?就好比一个工厂,能造汽车.飞机...,通过对外接口,由顾客决定,来定制哪一款产品. 在js内表现为,一个工厂函数/对象,包含汽车.飞机等子类,提供对外接口,根据参数返回不同子类的实例 简单实例如下: var factory= { car:function(name, size){ this.name= name; this.size= size; this.getName= function(){ return this.name } }, plane:function(name

js 工厂模式、简单模式、抽象模式

简单工厂模式又称为静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例,主要用来创建同一类的对象.其实,工厂模式的思想主要是将相同/相似的的对象或类进行提取归类,这样的话,就可以避免写太多重复性的代码.下面通过例子讲解一下: function creatBook(name, time, type) { //创建一个对象,并对对象拓展属性和方法 var o =new Object(); o.name = name; o.time = time; o.type =type; o.getName

js 工厂模式

工厂模式是管理对象的一种设计模式,通过向外提供一个公共方法用于创建对象.把使用对象的部分与创建对象的部分分离,创建对象部分与对象创建前的初始化分离,职责分离.jQuery.Callbacks是一个工厂,每次调用都会返回一个对象,并且根据传入的不同参数值返回的对象具有不同的特征. 1.简单工厂模式 在工厂方法中,根据传入的参数创建相应的对象,并且返回. function Orange(){ this.color = 'orange'; } function Apple(){ this.color

JS 设计模式(工厂模式环境搭建)

<!--引入的核心JS文件--> <script type="text/javascript" src="CommonUtil.js"></script> <script type=text/javascript charset=utf-8> <!--JS设计模式(工厂模式)--> //搭建一个工厂环境 //卖车店 function CarShop(){}; CarShop.prototype={ cons

JS设计模式(动态工厂模式)

<!--引入的核心JS文件--> <script type="text/javascript" src="CommonUtil.js"></script> <script type=text/javascript charset=utf-8> <!--JS设计模式(细粒度工厂模式)--> //搭建一个工厂环境 买什么车——(去什么店)卖车的店——卖车——生产车 //卖车店 super Shop 只有卖车的方

【JS设计模式】温习简单工厂模式、工厂方法模式、抽象工厂模式概念

注:空心箭头表示的是种继承关系,工厂类和产品类之间是一种依赖关系.是用箭头加虚线表示的,以下的模型图是用的实线是不正确(时间不够用,在这里我偷懒了.这个习惯不好,呵呵) 简单工厂模式(Simple Factory Pattern): 使用一个类(通常为单体)来创建实例;简单工厂模式也叫静态工厂方法模式(Static FactoryMethod Pattern). 接口的定义通常是以I开头标识符,在JS中未定义接口或抽象类的语法: var MacBikeFactory = { createBike

面向对象JS基础讲解,工厂模式、构造函数模式、原型模式、混合模式、动态原型模式

什么是面向对象?面向对象是一种思想!(废话). 面向对象可以把程序中的关键模块都视为对象,而模块拥有属性及方法.这样我们如果把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.接下来将为大家讲解在JS中面向对象的实现. 工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,而由于在ECMAScript中无法创建类,因此用函数封装以特定接口创建对象.其实现方法非常简单,也就是在函数内创建一个对象,给对象赋予属性及方法再将对象返回即可. function createBlog(

js对于工厂模式的理解

有很多人对工厂模式有着这样或者那样不理解的地方,今天我就和大家分享一下我的心得. 其实工厂模式是基于面向对象的一种模式.大家先看这样的一段代码: 其实这个程序很简单,学过js的人都会写,基本没什么问题.但是大家马上会意识到一个问题就是如果有100的对象会出现什么效果呢,没有错!代码会变得相当的多,这样加载起来会相当的慢,那么怎么解决这个问题呢?我相信大家都想到了吧!没错,就是把他封装起来,代码如下: 这个就是封装后的代码,其实这个就是一个简单的工厂模式,为什么这么说呢因为他的工作原理很像是在工厂

JS之工厂模式

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>工厂模式</title> 6 </head> 7 <body> 8 <script> 9 //让我们决定通过厂长告诉做什么事情,不需了解内部 10 /*模式作用: 11 1,对象的构建十分复杂,可以用此