文档章节

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

h
 hlxiong
发布于 2014/04/14 22:42
字数 356
阅读 381
收藏 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
浦东
私信 提问
修炼内功之JavaScript设计模式(一)

在开始阅读本文之前,大家可以先去看一下这个问题前端未来几年的发展方向是什么? 有一个简单的大局观,造完了火箭,再回归正文,我们的日常生活和工作中的大部分还是需要脚踏实地搬砖的,为...

童欧巴
09/07
0
0
《JavaScript设计模式与开发实践》原则篇(2)—— 最少知识原则

最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这 里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。 单一职责原则指导我们...

嗨呀豆豆呢
2018/12/30
0
0
《JavaScript设计模式与开发实践》最全知识点汇总大全

系列文章: 《JavaScript设计模式与开发实践》基础篇(1)—— this、call 和 apply 《JavaScript设计模式与开发实践》基础篇(2)—— 闭包和高阶函数 《JavaScript设计模式与开发实践》模式...

嗨呀豆豆呢
01/04
0
0
[译] 你需要知道的7个JavaScript设计模式

原文地址 设计模式在JavaScript中用于在JavaScript的Web项目中解决一些常见问题的可重复解决方案。 简介 JavaScript设计模式是非常适合作为一种模式去提供问题的解决方案,但这并不能代表可以...

金刚小仓
09/30
0
0
javascript设计模式与应用

javascript设计模式与应用 目录 构造函数模式 工厂模式 单例模式 代理模式 观察者模式 适配器模式 装饰器模式 迭代器模式 外观模式 状态模式 命令模式 前言 设计模式真的很多很复杂,建议有兴...

夏天来喽
04/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Sqoop之导入Mysql数据到Hive出现ASCII

问题是这样的,从Mysql中导入数据到Hive中,Mysql中数据是"T2",到Hive中后,发现变为"54 32",咦,怎么乱码了,感觉这像ASCII编码。 现象有了,之前都没遇到过这样,觉得很奇怪,迅速找了下...

克虏伯
18分钟前
2
0
深度科技受邀参加鲲鹏计算产业峰会·海南

10月22日,华为及生态伙伴共同举办了以“鲲鹏展翅,力算未来 共赢多样性计算时代”为主题的“鲲鹏计算产业峰会•海南”,来自各领域的300多名行业客户、专家及生态伙伴齐聚一堂,共同分享计算...

后浪涛涛
20分钟前
3
0
【Android JetPack系列】LifeCycles

一、简介 Lifecycles 是一个持有组件生命周期状态(如活动或片段)信息的类,并允许其他对象观察此状态。 生命周期使用两个主要枚举来跟踪其关联组件的生命周期状态: Event:从 框架 和 Li...

Agnes2017
21分钟前
2
0
配置码云git自动更新的webhook

配置项目提交到git的时候自动同步服务器代码 一、在服务器项目跟目录新建文件hook.php 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $json = file_get_contents("php://input"); $data ......

dragon_tech
27分钟前
2
0
一道题深度剖析this指向

< script > var num = 1 ; var myObject = { num : 2 , add : function (){ this . num = 3 ; ( function (){ // 这里的 this 是 window,因为自调用函数的调用者是windo,使用箭头函数则指向......

李超明
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部