Prototype

by Artem

JavaScript

'use strict';

class Project {
  constructor(id, name, sourceCode) {
    this.id = id;
    this.name = name;
    this.sourceCode = sourceCode;
  }
  copy() {
    return new Project(this.id, this.name, this.sourceCode);
  }
}

class ProjectFactory {
  setProject(project) {
    this.project = project;
  }
  cloneProject() {
    return this.project.copy();
  }
}

// usage
const master = new Project(1, 'My Project', 'console.log("Hello, World!")');
const projectFactory = new ProjectFactory();
projectFactory.setProject(master);
const masterClone = projectFactory.cloneProject();
console.log(masterClone);