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表单提交的代码
Sep 13 Javascript
JS对URL字符串进行编码/解码分析
Oct 25 Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
Javascript下拉刷新的简单实现
Feb 14 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
AngularJS 异步解决实现方法
Jun 12 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
Jan 30 Javascript
vue cli2.0单页面title修改方法
Jun 07 Javascript
简述vue路由打开一个新的窗口的方法
Nov 29 Javascript
微信小程序绑定手机号获取验证码功能
Oct 22 Javascript
微信小程序吸底区域适配iPhoneX的实现
Apr 09 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 radio 单选框获取与保持值的实现代码
2010/05/15 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
初识PHP
2014/09/28 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
php多重接口的实现方法
2015/06/20 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
浅析js中取绝对值的2种方法
2013/07/09 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
python开发入门——set的使用
2020/09/03 Python
Django限制API访问频率常用方法解析
2020/10/12 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
在职人员函授期间自我评价分享
2013/11/08 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
关于工资低的辞职信
2014/01/14 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
党员三严三实心得体会
2014/10/13 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
同意离婚答辩状
2015/05/22 职场文书
中国合伙人观后感
2015/06/02 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
试了下Golang实现try catch的方法
2021/07/01 Golang