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 =...