<!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>
转载于:https://www.cnblogs.com/diligenceday/p/3436676.html
相关资源:JAVA上百实例源码以及开源项目