JS实现简单的图书馆享元模式实例
本文实例讲述了JS实现简单的图书馆享元模式。分享给大家供大家参考。具体如下:
<!DOCTYPEhtml>
<html>
<head>
<title>享员模式</title>
</head>
<body>
<script>
/*
*flyweight享员模式
*/
//例子是一个图书馆存书借书->_->
varBook=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(){
returnthis.title;
},
getAuthor:function(){
returnthis.author;
},
getISBN:function(){
returnthis.ISBN;
},
/*__more.._*/
updateCheckoutStatus:function(booId,checkoutDate,checkoutMember){
this.id=bookId;
this.checkoutDate=checkoutDate;
this.checkoutMember=checkoutMember;
/*_more.._*/
}
};
//下面介绍享元的版本;PS(使用了一个OBJ存书籍,这样就可以存多的书)
varBookFactory=(function(){
varexistingBooks={},existingBook;
return{
createBook:function(title,author,genre,ISBN){
existingBook=existingBooks[ISBN];
if(existingBook){
returnexistingBook;
}else{
varbook=newBook(/*_moreData_bookInfo==_*/)
returnexistingBooks[ISBN]=book;
}
}
}
})();
varBookRecordManager=(function(){
varbookRecordDatabase={};
return{
addBookRecord:function(id,ISNB/*==*/){
varbook=BookFactory.createBook(/**/);
bookRecordDatabase[id]={
checkoutDate:checkoutDate,
checkoutMember:checkoutMember
};
},
updateCheckoutStatus:function(bookId,xx){
bookRecordDatabase[bookId]={
xx:tt,
oo:yy
}
},
extend:function(){
/*自定义各种公用方法了*/
}
}
})();
</script>
</body>
</html>
希望本文所述对大家的javascript程序设计有所帮助。