前端之家收集整理的这篇文章主要介绍了
JS实现简单的图书馆享元模式实例,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了JS实现简单的图书馆享元模式。分享给大家供大家参考。具体如下:
享员模式
@H_
301_9@
/*
*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,checkoutMember){
this.id = bookId;
this.checkoutDate = checkoutDate;
this.checkoutMember = checkoutMember;
/*_more.._*/
}
};
//下面介绍享元的版本;PS(使用了一个OBJ存书籍,这样就可以存多的书)
var BookFactory = (function(){
var existingBooks = {},existingBook;
return {
createBook : function(title,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(){
/*
自定义各种公用
方法了*/
}
}
})();
希望本文所述对大家的javascript程序设计有所帮助。