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 相关文章推荐
JS中引用百度地图并将百度地图的logo和信息去掉
Sep 29 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
Mar 26 Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 Javascript
javascript引用类型指针的工作方式
Apr 13 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
jQuery添加options点击事件并传值实例代码
May 18 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
Feb 10 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
vue中关闭eslint的方法分析
Aug 04 Javascript
jQuery解析json格式数据示例
Sep 01 jQuery
JavaScript基础之this和箭头函数详析
Sep 05 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/06/09 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
Python谱减法语音降噪实例
2019/12/18 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
Python接口测试文件上传实例解析
2020/05/22 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
电厂厂长岗位职责
2014/01/02 职场文书
考核工作实施方案
2014/03/30 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
催款函范文
2015/06/24 职场文书
运动会主持词大全
2015/07/02 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库