ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 팩토리 패턴
    CS/팩토리 패턴 2023. 7. 18. 21:36

    팩토리 패턴(Factory Pattern)

    :팩토리 패턴(Factory Pattern)은 상속 관계에 있는 두 클래스를 활용하여 객체 생성을 분리하는 패턴이다.

    이 패턴에서 상위 클래스는 객체 생성의 뼈대를 결정하고, 하위 클래스는 객체 생성에 대한 구체적인 내용을 결정한다.

    상위 클래스는 객체 생성을 위한 메서드를 정의하고, 이를 템플릿 메서드로 활용한다.

    이 메서드는 객체를 생성하는 과정에서 변하지 않는 뼈대 로직을 가지고 있습니다. 하위 클래스들은 이 메서드를 상속받아 구현하면서 실제 객체를 생성하는 구체적인 내용을 결정한다. 이로써 상위 클래스는 객체의 생성 방식에 대해 알 필요가 없어지므로 유연성이 증가하고 클라이언트 코드는 상위 클래스를 통해 객체를 생성하며, 실제로 생성되는 객체의 타입은 하위 클래스에 의해 결정된다.

    이를 통해 클라이언트 코드는 구체적인 객체의 타입에 종속되지 않고, 추상화된 인터페이스를 통해 객체를 생성할 수 있다

    팩토리 패턴을 사용하면 객체 생성 로직이 하위 클래스에 집중되기 때문에 유지보수성이 향상된다.

    새로운 객체가 추가되거나 객체 생성 방식이 변경되더라도 상위 클래스는 수정할 필요가 없다. 이는 코드의 유연성과 확장성을 높여준다. 

     

     

    아래의 간단한 예를 확인하자 

    // 플레이어 클래스
    class Player {
      constructor(name, level) {
        this.name = name;
        this.level = level;
      }
    
      getInfo() {
        return `Name: ${this.name}, Level: ${this.level}`;
      }
    }
    
    // 플레이어 생성을 담당하는 팩토리 클래스
    class PlayerFactory {
      createPlayer(name, level) {
        // 플레이어 객체 생성 로직
        return new Player(name, level);
      }
    }
    
    // 사용 예시
    const factory = new PlayerFactory();
    
    const player1 = factory.createPlayer("John", 10);
    console.log(player1.getInfo()); // Name: John, Level: 10
    
    const player2 = factory.createPlayer("Sarah", 15);
    console.log(player2.getInfo()); // Name: Sarah, Level: 15
Designed by Tistory.