注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

梦幻雪冰

技在手,能在身,思在脑,从容过生活——陈能堡

 
 
 

日志

 
 

JavaScript 高级开发-工厂模式  

2015-04-26 23:05:17|  分类: JavaScript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
先来回顾之前的剧情,创建1000个学生对象,导致代码复用性低和全局变量变多了,今天我们就采用JavaScript设计模式——工厂模式来解决这个问题。
工厂模式是什么东东呢?就拿生活中的例子来说,可以把工厂模式看做是一个工厂,我们需要提供原料(对应JavaScript 函数参数),工厂里面进行加工(对应JavaScript 函数具体功能),工厂生产出产品(对应JavaScript 函数的返回值)。

JavaScript 高级开发-工厂模式 - 梦幻雪冰 - 梦幻雪冰
 
工厂模式的具体概括:入口——参数;过程——具体功能;出口——返回值;

工厂模式具体代码如下:
  • function userInf(name, score) {
  •     // 定义对象
  •     var user = {};
  •     user.name = name;
  •     user.score = score;
  •     user.showScore = function() {
  •         // 根据成绩进行设置成绩信息
  •         if (user.score < 60) {
  •             user.scoreInfo = '不及格';
  •         } else if (user.score < 70) {
  •             user.scoreInfo = '及格';
  •         } else if (user.score < 80) {
  •             user.scoreInfo = '良';
  •         } else if (user.score < 100) {
  •             user.scoreInfo = '优秀';
  •         }
  •         console.log(user.scoreInfo);
  •     }
  •     // 返回值
  •     return user;
  • }

调用工厂模式:
  • // 工厂模式返回的值
  • var lili = userInf("梦幻雪冰——陈能堡", 60);
  • var baobao = userInf("独行冰海——刘国利", 80);
  • // 输出值
  • lili.showScore();
  • baobao.showScore();

结论:工厂模式可以解决创建多个对象的问题,但是不好的一点,函数的空间仍然分别进行创建,在空间方面没有得到优化(看下面的代码)。
  • // 判断对象是否是调用统一地址中的方法
  • console.log(objYongge.sayInf == doudou.sayInf); //输出的结果是false,代表不是调用同一个方法

于是继续查找资料,发现了JavaScript的另外一个设计模式——构造函数模式,不知道这个构造函数模式能不能解决掉工厂模式遇到的问题。下一集为大家继续介绍——构造函数模式。





欢迎学习交流——梦幻雪冰独行冰海@font-face中iefix的详解 - 梦幻雪冰 - 梦幻雪冰
HTML5学堂贴吧——HTML5学堂
HTML5学堂微博——HTML5学堂
HTML5学堂官网——HTML5学堂
HTML5学堂微信
setInterval和setTimeout参数剖析 - 梦幻雪冰 - 梦幻雪冰

  评论这张
 
阅读(90)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017