• [Pattern] Flyweight


    Reuse existing instances when working with identical objects

    The flyweight pattern is useful when you're creating a huge number of objects, which could potentially drain all available RAM,

    It allows us to minimize the amount of consumed memory.

    In JavaScript, we can easily solve this problem through prototypal inheritance. Nowadays, hardware has GBs of RAM, which makes the flyweight pattern less important.

    const createBook = (title, author, isbn) => {
      const existingBook = books.has(isbn);
    
      if (existingBook) {
        return books.get(isbn);
      }
    
      const book = new Book(title, author, isbn);
      books.set(isbn, book);
    
      return book;
    };
    
    const bookList = [];
    
    const addBook = (title, author, isbn, availability, sales) => {
      const book = {
        ...createBook(title, author, isbn),
        sales,
        availability,
        isbn
      };
    
      bookList.push(book);
      return book;
    };
    
    addBook("Harry Potter", "JK Rowling", "AB123", false, 100);
    addBook("Harry Potter", "JK Rowling", "AB123", true, 50);
    addBook("To Kill a Mockingbird", "Harper Lee", "CD345", true, 10);
    addBook("To Kill a Mockingbird", "Harper Lee", "CD345", false, 20);
    addBook("The Great Gatsby", "F. Scott Fitzgerald", "EF567", false, 20);
    
    // Although there are 5 copies, we only have 3 Book instances!
    console.log("Total amount of copies: ", bookList.length); // 5
    console.log("Total amount of books: ", isbnNumbers.size); // 3
  • 相关阅读:
    Java堆栈内存总结
    Java String使用总结
    Java异常处理
    音乐之声——midi制作原理
    Windows使用问题总结
    Chrome浏览器的使用
    搭建svn服务器
    Windows实用快捷键
    Phone文件备份
    9大背包第一弹 | 01背包
  • 原文地址:https://www.cnblogs.com/Answer1215/p/16643128.html
Copyright © 2020-2023  润新知