설명1) 팩토리 메소드 패턴은 부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공하지만, 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴.
설명2) 객체를 생성할 때 필요한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정한다. 팩토리 메서드 패턴을 사용하면 클래스 인스턴스 만드는 일을 서브클래스에게 맡기게 된다.
// 입력한 년차에 따라 senior 와 junior 로 결과 반환
class Developer {
constructor(info) {
this grade = info.grade;
}
static personClass(year) {
if (age >= 5) {
return new Senior();
} else {
return new Junior();
}
}
}
class Senior extends Developer {
constructor() {
super({grade: 'You are Senior!!'});
}
}
class Junior extends Developer {
constructor() {
super({grade: 'You are Junior!!'})
}
}
const 홍길동 = Developer.personClass(20);
const 개똥이 = Developer.personClass(3);
// 덧셈, 뺄셈 chatGPT 에서 검색한 결과
class Calculator {
constructor(operator) {
if (operator === '+') {
this.calculate = function(a, b) {
return a + b;
};
} else if (operator === '-') {
this.calculate = function(a, b) {
return a - b;
};
} else {
//return null;
throw new Error('아직 제공하지 않는 기능입니다.')
}
}
}
// 덧셈 기능 Calculator 클래스의 메소드를 상속받아서 calculate 메소드를 사용할 수 있다.
const addCalculator = new Calculator('+');
console.log(addCalculator.calculate(5, 8)); // 13
// 뺄셈 기능 Calculator 클래스의 메소드를 상속받아서 calculate 메소드를 사용할 수 있다.
const subCalculator = new Calculator('-');
console.log(subCalculator.calculate(8, 5)); // 3