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 相关文章推荐
HTTP状态代码以及定义(解释)
Feb 02 Javascript
判断脚本加载是否完成的方法
May 26 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
js实现DOM走马灯特效的方法
Jan 21 Javascript
JavaScript 动态三角函数实例详解
Jan 08 Javascript
JavaScript Base64 作为文件上传的实例代码解析
Feb 14 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
Jun 01 Javascript
vue项目中公用footer组件底部位置的适配问题
May 10 Javascript
全面了解JavaScript的作用域链
Apr 03 Javascript
pageGroup.js实现分页功能
Jul 27 Javascript
js实现简单掷骰子小游戏
Oct 24 Javascript
vue框架中props的typescript用法详解
Feb 17 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中的实现trim函数代码
2007/03/19 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
js继承实现方法详解
2016/12/16 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
Python判断Abundant Number的方法
2015/06/15 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
Django xadmin安装及使用详解
2020/10/26 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
职称自我鉴定
2013/10/15 职场文书
售后求职信范文
2014/03/15 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
2014年人事部工作总结
2014/12/03 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
公司开业致辞
2015/07/29 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
MySQL表字段时间设置默认值
2021/05/13 MySQL
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python