文档章节

javascript 设计模式之工厂(Factory)模式

h
 hlxiong
发布于 2014/04/14 22:42
字数 356
阅读 376
收藏 9

工厂模式介绍

    工厂模式是一个创建型的模式,主要就是创建对象。其中工厂模式又分为简单工厂模式和抽象工厂模式。简单工厂模式是通过工厂方法确定创建 对应类型的对象。抽象工厂模式是通过子类来实现,成员实例化推迟到子类中进行。工厂模式都拥有相同的接口。

    工厂模式一般用于:创建相似对象时的重复操作,不知道对象类型提供创建对象的接口。下面我们模式飞机大战游戏中的飞机类型进行工厂模式示例。

工厂模式示例

工厂模式示例如下:

/*构建飞机工厂(飞机大战游戏中的飞机)*/
var AirplaneFactory = function(){};  AirplaneFactory.prototype = {
  createAirplane:function(model){
    var plan;
    switch(model){
        case 'General':
          plan = new GeneralPlan();
          break;
        case 'Boss':
          plan = new BossPlan();
          break;
    }
    return plan;
  }
}
/*一般炮灰飞机*/
var GeneralPlan = function(){};
GeneralPlan.prototype = {
  name:'general paln',
  type:'general',
  getName:function(){
    return this.name;
  },
  getType:function(){
    return this.type;
  }
}
/*BOSS 飞机*/
var BossPlan = function(){};
BossPlan.prototype = {
  name:'boss plan',
  type:'boss',
  getName:function(){
    return this.name;
  },
  getType:function(){
    return this.type;
  }
}
/*通过工厂生成 相应的飞机*/
var myPlan = new AirplaneFactory().createAirplane('Boss');
console.log(myPlan.getName());
var myPlan2 = new AirplaneFactory().createAirplane('General');
console.log(myPlan2.getName());

工厂模式总结

   

在JavaScript中使用工厂模式的主要弱化了对象间的耦合,简化更换或者选择类,防止代码的重复工作。

© 著作权归作者所有

共有 人打赏支持
h
粉丝 1
博文 2
码字总数 1109
作品 0
浦东
私信 提问
你需要了解的23种JavaScript设计模式

为什么要学习设计模式? 在许多访谈中,你可能会遇到很多面向对象编程中的接口,抽象类,代理和以及其他与设计模式相关的问题。 一旦了解了设计模式,它会让你轻松应对任何访谈,并可以在你的...

java高级架构牛人
06/02
0
0
JavaScript设计模式系列一之工厂模式(附案例源码)

文章初衷 设计模式其实旨在解决语言本身存在的缺陷, 目前javaScript一些新的语法特性已经集成了一些设计模式的实现, 大家在写代码的时候,没必要为了用设计模式而去用设计模式, 那么我这边为什...

小钱钱阿圣
2017/09/08
0
0
【译】简单理解 JavaScript 中的设计模式

前言导读:这篇文章比较适合初步接触设计模式的同学,文中介绍了模块模式、单例模式、工厂模式、装饰者模式,例子都很浅显易懂。看完之后会对设计模式有一个初步的了解。 当你开始一个新的项...

雯子ATHENA
10/26
0
0
[译文]优雅的现代JavaScript设计模式: 冰冻工厂

原文地址 Elegant patterns in modern JavaScript: Ice Factory 从上个世纪九十末开始,我就开始断断续续的从事JavaScript的开发工作.初始,我并不喜欢它.但是自从了解了ES2015(也叫ES6),我开始...

YusenMeng
09/23
0
0
从ES6重新认识JavaScript设计模式(二): 工厂模式

1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度...

Lee_tanghui
04/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一个案例彻底弄懂如何正确使用 mysql inndb 联合索引

摘要: 有一个业务是查询最新审核的5条数据 ```sql SELECT `id`, `title` FROM `th_content` WHERE `audit_time` < 1541984478 AND `status` = 'ONLINE' ORDER BY `audit_time` D. 原来链接 ......

阿里云官方博客
36分钟前
2
0
详解如何用爬虫采集视频播放量数据(以腾讯视频为例)

现代社会提到大数据大家都知道这是近几年才形成的对于数据相关的新名词,在1980年,著名未来学家阿尔文·托夫勒便在 《第三次浪潮》一书中,将大数据热情地赞颂为“第三次浪潮的 华彩乐章”...

技术阿飞
41分钟前
5
0
区块链时代的拜占庭容错:Tendermint(二)

原文题目:《Tendermint: Byzantine Fault Tolerance in the Age of Blockchains》 原文作者:Ethan Buchman 翻译:饶云坤 校对:傅晓波 本文为节选 以下为正文: 本章阐述Tendermint共识算法...

万向区块链
54分钟前
3
0
AS连接网易Mumu模拟器

1、安装模拟器 打开这个网址现在模拟器然后安装 http://mumu.163.com/ 2、安装完成后启动模拟器 3、进入模拟器安装目录 例如本机的安装目录:C:\Program Files (x86)\MuMu\emulator\nemu\vmo...

HGMrWang
今天
11
0
设计要做到扩展性强还挺难的

概述 在日常开发中,有时候你的上司会跟你说,这个模块的设计扩展性要高。把这句话说出来很简单,但是要做到则非常难。导致难的其中一个因素是: 你不熟悉这个行业的业务的玩法 我举个例子来...

Sam哥哥聊技术
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部