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多选下拉列表插件jquery multiselect功能介绍及使用
May 24 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
May 20 Javascript
Vue组件BootPage实现简单的分页功能
Sep 12 Javascript
jQuery中map函数的两种方式
Apr 07 jQuery
详解angularjs利用ui-route异步加载组件
May 21 Javascript
Angular+Node生成随机数的方法
Jun 16 Javascript
浅谈vue引入css,less遇到的坑和解决方法
Jan 20 Javascript
解析Vue.js中的组件
Feb 02 Javascript
angularjs 缓存的使用详解
Mar 19 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
Jul 13 Javascript
js不常见操作运算符总结
Nov 20 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微信红包API接口
2015/12/05 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
python字符串str和字节数组相互转化方法
2017/03/18 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python从子线程中获得返回值的方法
2019/01/30 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
用Python开发app后端有优势吗
2020/06/29 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
英国鞋网:Rubber Sole
2020/03/03 全球购物
如何理解委托
2012/01/06 面试题
武汉某公司的C#笔试题面试题
2015/12/25 面试题
留学自荐信
2013/10/10 职场文书
大学生求职自荐信
2013/12/12 职场文书
工作态度检讨书
2014/02/11 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
个人职业及收入证明
2014/10/13 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
汽车转让协议书
2015/01/29 职场文书
班主任自我评价范文
2015/03/11 职场文书
博士论文答辩开场白
2015/06/01 职场文书
学习经验交流会策划书
2015/11/02 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书