OMENSAH
3/6/2018 - 12:31 AM

withoutFlyweight.js

var Student = function(data){
    this.name = data.name;
    this.courses = data.courses;
    this.fees = data.fees;
    this.graduated = data.graduated
}

function StudentDatabase(){
    var students = {};
    var count = 0;
    var add = function(data){
        students[data.name] = new Student(data)
        count ++;
    };
    var get = function(name){
        return students[name];
    };
    var getCount = function(){
        return count;
    }
    
    return{
        add: add,
        get: get,
        getCount: getCount
    }
};

var students = new StudentDatabase();

var courses = ['Physics', 'Biology', 'Chemistry', 'Mathematics'];
var graduated = [true, false];
var  initialMemory = process.memoryUsage().heapUsed;
for( var i=0; i < 1000000; i++){
    students.add({
        
        name: 'student ' + i,
        courses: courses[Math.floor(Math.random() *5 ) ],
        fees: 1000,
        graduated: graduated[Math.floor(Math.random() *2 ) ]
        
    })
}

var afterMemory  = process.memoryUsage().heapUsed;
console.log('used memory ' + (afterMemory - initialMemory)/ 1000000)
console.log( students.getCount())