JS实现简单的图书馆享元模式实例


Posted in Javascript onJune 30, 2015

本文实例讲述了JS实现简单的图书馆享元模式。分享给大家供大家参考。具体如下:

<!DOCTYPE html>
<html>
<head>
<title>享员模式</title>
</head>
<body>
<script>
 /*
  *flyweight 享员模式
  */
 //例子是一个图书馆存书借书 ->_->
 var Book = function(id, title, author, genre, pageCount, publisherId, ISBN, checkoutDate, checkoutMember /*还有一些*/){
  this.id = id;
  this.title = title;
  this.author = author;
  this.genre = this.genre;
  this.pageCount = pageCount;
  this.publisherId = publisherId;
  this.ISBN = ISBN;
  /*...*/
  this.checkoutDate = checkoutDate;
  this.checkoutMember = checkoutMember;
 };
 Book.prototype = {
  getTitle : function(){
   return this.title;
  },
  getAuthor : function(){
   return this.author;
  },
  getISBN : function(){
   return this.ISBN;
  },
  /*__more.._*/
  updateCheckoutStatus : function(booId,checkoutDate,checkoutMember){
   this.id = bookId;
   this.checkoutDate = checkoutDate;
   this.checkoutMember = checkoutMember;
   /*_more.._*/
  }
 };
 //下面介绍享元的版本;PS(使用了一个OBJ存书籍,这样就可以存多的书)
 var BookFactory = (function(){
  var existingBooks = {},existingBook;
  return {
   createBook : function(title,author,genre,ISBN){
    existingBook = existingBooks[ISBN];
    if(existingBook){
     return existingBook;
    }else{
     var book = new Book(/*_moreData_bookInfo == _*/)
     return existingBooks[ISBN] = book;
    }
   }
  }
 })();
 var BookRecordManager = (function(){
  var bookRecordDatabase = {};
  return {
   addBookRecord : function(id,ISNB/* == */){
    var book = BookFactory.createBook(/**/);
    bookRecordDatabase[id] = {
     checkoutDate : checkoutDate,
     checkoutMember : checkoutMember
    };
   },
   updateCheckoutStatus : function(bookId,xx){
    bookRecordDatabase[bookId] = {
     xx : tt,
     oo : yy
    }
   },
   extend : function(){
    /*自定义各种公用方法了*/
   }
  }
 })();
</script>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jQuery 常见学习网站与参考书
Nov 09 Javascript
js 加载并解析XML字符串的代码
Dec 13 Javascript
js 数据类型转换总结笔记
Jan 17 Javascript
jquery win 7透明弹出层效果的简单代码
Aug 06 Javascript
js给selected添加options的方法
May 06 Javascript
举例说明JavaScript中的实例对象与原型对象
Mar 11 Javascript
js判断文件格式及大小的简单实例(必看)
Oct 11 Javascript
bootstrap模态框消失问题的解决方法
Dec 02 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 Javascript
基于jQuery实现文字打印动态效果
Apr 21 jQuery
AngularJS实现与后台服务器进行交互的示例讲解
Aug 13 Javascript
ES6入门教程之let、const的使用方法
Apr 13 Javascript
JS建造者模式基本用法实例分析
Jun 30 #Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 #Javascript
JS模式之单例模式基本用法
Jun 30 #Javascript
js简单工厂模式用法实例
Jun 30 #Javascript
JavaScript判断undefined类型的正确方法
Jun 30 #Javascript
超赞的动手创建JavaScript框架的详细教程
Jun 30 #Javascript
JavaScript中Null与Undefined的区别解析
Jun 30 #Javascript
You might like
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
javascript 内存回收机制理解
2011/01/17 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
URL中“#” “?” &amp;“”号的作用浅析
2017/02/04 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
Python中的startswith和endswith函数使用实例
2014/08/25 Python
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
Python金融数据可视化汇总
2017/11/17 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
python实现月食效果实例代码
2019/06/18 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
WSDL的操作类型主要有几种
2013/07/19 面试题
人力资源专员岗位职责
2014/01/30 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
毕业生见习报告总结
2014/11/08 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
教师听课评语大全
2014/12/31 职场文书
实习指导老师意见
2015/06/04 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
关于环保的广播稿
2015/12/17 职场文书