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的可以控制左右滚动及自动滚动效果的代码
Jul 25 Javascript
基于jQuery的左右滚动实现代码
Dec 03 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
Mar 28 Javascript
js 函数的副作用分析
Aug 23 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
Mar 05 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
Sep 10 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
May 12 Javascript
浅析JQuery中的html(),text(),val()区别
Sep 01 Javascript
基于jQuery创建鼠标悬停效果的方法
Mar 07 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
Dec 07 Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 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+APACHE实现用户论证的方法
2006/10/09 PHP
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
JavaScript事件用法浅析
2016/10/31 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
vue router 源码概览案例分析
2018/10/09 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
python super用法及原理详解
2020/01/20 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
中国网上药店领导者:1药网
2017/02/16 全球购物
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
实习教师自我鉴定
2013/09/27 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
历史学专业求职信
2014/06/19 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
公司文体活动总结
2015/05/07 职场文书
法律意见书范文
2015/05/20 职场文书
少年犯观后感
2015/06/11 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android