⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 14.01 - publiclibrary class from chapter 3.js

📁 JS设计模式源代码
💻 JS
字号:
/* From chapter 3. */var Publication = new Interface('Publication', ['getIsbn', 'setIsbn', 'getTitle',   'setTitle', 'getAuthor', 'setAuthor', 'display']);var Book = function(isbn, title, author) { ... } // implements Publication/* Library interface. */var Library = new Interface('Library', ['findBooks', 'checkoutBook', 'returnBook']);/* PublicLibrary class. */var PublicLibrary = function(books) { // implements Library  this.catalog = {};  for(var i = 0, len = books.length; i < len; i++) {    this.catalog[books[i].getIsbn()] = { book: books[i], available: true };  }};PublicLibrary.prototype = {  findBooks: function(searchString) {    var results = [];    for(var isbn in this.catalog) {      if(!this.catalog.hasOwnProperty(isbn)) continue;      if(searchString.match(this.catalog[isbn].getTitle()) ||          searchString.match(this.catalog[isbn].getAuthor())) {        results.push(this.catalog[isbn]);      }    }    return results;  },  checkoutBook: function(book) {    var isbn = book.getIsbn();    if(this.catalog[isbn]) {      if(this.catalog[isbn].available) {        this.catalog[isbn].available = false;        return this.catalog[isbn];      }      else {        throw new Error('PublicLibrary: book ' + book.getTitle() +           ' is not currently available.');      }    }    else {      throw new Error('PublicLibrary: book ' + book.getTitle() + ' not found.');    }  },  returnBook: function(book) {    var isbn = book.getIsbn();    if(this.catalog[isbn]) {      this.catalog[isbn].available = true;    }    else {      throw new Error('PublicLibrary: book ' + book.getTitle() + ' not found.');    }      }};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -