Abstract Factory
by Artem
Babel + JSX
'use strict';
class JavaDeveloper {
language = 'java';
static displayName = 'JavaDeveloper';
writeCode() {
console.log(`${JavaDeveloper.displayName} writes ${this.language} code...`);
}
}
class ManualTester {
static displayName = 'ManualTester';
testCode() {
console.log(`${ManualTester.displayName} tests code...`);
}
}
class ProjectManager {
static displayName = 'ProjectManager';
manageProject() {
console.log(`${ProjectManager.displayName} manages project...`);
}
}
class Team {
getDeveloper() {
return new JavaDeveloper();
}
getTester() {
return new ManualTester();
}
getProjectManager() {
return new ProjectManager();
}
}
// usage
const team = new Team();
const developer = team.getDeveloper();
const tester = team.getTester();
const projectManager = team.getProjectManager();
developer.writeCode();
tester.testCode();
projectManager.manageProject();