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

📄 17.01 - publiclibrary class.js

📁 JS设计模式源代码
💻 JS
字号:
/* Interfaces. */var Publication = new Interface('Publication', ['getIsbn', 'setIsbn', 'getTitle',    'setTitle', 'getAuthor', 'setAuthor', 'getGenres', 'setGenres', 'display']);var Library = new Interface('Library', [‘addBook’, 'findBooks', 'checkoutBook',    'returnBook']);var Catalog = new Interface('Catalog', ['handleFilingRequest', 'findBooks',    'setSuccessor']);/* Book class. */var Book = function(isbn, title, author, genres) { // implements Publication  ...}/* PublicLibrary class. */var PublicLibrary = function(books) { // implements Library  this.catalog = {};  for(var i = 0, len = books.length; i < len; i++) {    this.addBook(books[i]);  }};PublicLibrary.prototype = {  findBooks: function(searchString) {    var results = [];    for(var isbn in this.catalog) {      if(!this.catalog.hasOwnProperty(isbn)) continue;      if(this.catalog[isbn].getTitle().match(searchString) ||          this.catalog[isbn].getAuthor().match(searchString)) {        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.');    }  },  addBook: function(newBook) {    this.catalog[newBook.getIsbn()] = { book: newBook, available: true };  }};

⌨️ 快捷键说明

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