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 相关文章推荐
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
Mar 20 Javascript
js带缩略图的图片轮播效果代码分享
Sep 14 Javascript
JS中script标签defer和async属性的区别详解
Aug 12 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
Oct 31 Javascript
layui实现点击按钮给table添加一行
Aug 10 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
Mar 22 Javascript
angular多语言配置详解
May 16 Javascript
js瀑布流布局的实现
Jun 28 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 Javascript
canvas绘制折线路径动画实现
May 12 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面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php遍历目录方法小结
2015/03/10 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
python提取字典key列表的方法
2015/07/11 Python
浅谈scrapy 的基本命令介绍
2017/06/13 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
解决python运行启动报错问题
2020/06/01 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
澳大利亚最便宜的网上药房:Chemist Warehouse
2020/01/30 全球购物
党支部考察意见范文
2015/06/02 职场文书
重温入党誓词主持词
2015/06/29 职场文书
趣味运动会加油词
2015/07/18 职场文书
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python