Design Pattern

[DesignPattern] State Pattern in TypeScript

다닿 2024. 3. 16. 00:43

TypeScript로 작성한 스테이트 패턴 예제

 

// 상태를 나타내는 인터페이스
interface State {
  handle(): void;
}

// StateA 클래스
class StateA implements State {
  handle(): void {
    console.log('A상태');
  }
}

// StateB 클래스
class StateB implements State {
  handle(): void {
    console.log('B상태');
  }
}

// Context 클래스
class Context {
  private state: State;

  constructor(state: State) {
    this.state = state;
  }

  // 상태 변경 메서드
  setState(state: State): void {
    this.state = state;
  }

  // 행동을 위임하는 메서드
  request(): void {
    this.state.handle();
  }
}

// 사용 예제
const context = new Context(new StateA());

// 현재 상태에서 요청 수행
context.request();

// 상태 변경
context.setState(new StateB());

// 변경된 상태에서 요청 수행
context.request();

'Design Pattern' 카테고리의 다른 글

[DesignPattern] Pub-Sub in TypeScript  (0) 2024.03.16
[DesignPattern] Singleton in TypeScript  (0) 2024.03.16
[DesignPattern] 디자인 패턴 종류  (0) 2023.10.13