JSFiddle - React, Tailwind, and code Playground

by bhupendra negi

HTML

<h3>
Flyweight Pattern
</h3>

JavaScript

var Task = function(data) {
  this.flyweight = FlyweightFactory.get(data.project, data.priority, data.completed);
  this.name = data.name;
  //this.priority = data.priority;
  //this.completed = data.completed;
  //this.project = data.project;
};

var Flyweight = function(project, priority, completed) {
  this.project = project;
  this.priority = priority;
  this.completed = completed;
};

// flyweight
var FlyweightFactory = function() {
  var flyweights = {};
  var get = function(project, priority, completed) {
    if (!flyweights[project + priority + completed]) {
      flyweights[project + priority + completed] = new Flyweight(project, priority, completed);
    }
    return flyweights[project + priority + completed];
  };
  var getcount = function() {
    var count = 0;
    for (var f in flyweights) count ++ ;
    return count;
  }
  return {
    get: get,
    getcount: getcount,
    flyweights:flyweights
  }
}();


function TaskCollection() {
  var tasks = [];
  var count = 0;
  var add = function(data) {
    tasks[data.name] = new Task(data);
    count++;
  };
  var get = function(name) {
    return tasks[name];
  };

  var getCount = function() {
    return count;
  };
  return {
    add: add,
    get: get,
    getCount: getCount,
    taskDetails: tasks
  }
}
// create tasks

var tasks = TaskCollection();
var priorties = [1, 2, 3, 4, 5];
var projects = ['course', 'training', '', 'lecture', 'authoring'];
var completed = [true, false];
// get innitial memory usage 

var initialMemory = window.performance.memory.usedJSHeapSize;
// in chrome , this is blocked due to security concerns 
// try using process.memoryUsage().heapUsed in node
console.log(window.performance.memory);

for (i = 0; i < 100; i++) {
  tasks.add({
    name: 'task_' + i,
    priority: priorties[Math.floor(Math.random() * 5)],
    project: projects[Math.floor(Math.random() * 5)],
    completed: completed[Math.floor(Math.random() * 2)]
  })
};
var afterMemory =...