디자인패턴(생성패턴)-팩토리패턴

Jintae Kim·2023년 3월 11일
0

디자인패턴

목록 보기
1/1
post-thumbnail

팩토리 패턴(factory pattern)

팩토리 메소드 패턴(Factory method pattern)

설명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
profile
공부하고 또 공부하고 또 공부하고

0개의 댓글