30 Days of JavaScript - Classes | LeetCode

Bori·2025년 11월 30일

LeetCode

목록 보기
5/5
post-thumbnail

문제를 풀면서 문제의 의도와 연관된 개념에 대해 정리합니다.

2694. Event Emitter

이벤트 기반 시스템의 작동 원리 직접 구현하기
(Node.js 의 EventEmitter 처럼 동작하는 최소한의 이벤트 엔진 구현)

  • 이벤트 기반 구조(Event-driven architecture) 이해
    • 이벤트 구독(subscribe), 발생(emit), 구독 해제(unsubscribe)의 기본 메커니즘 직접 설계하기

      Event-driven architecture(EDA)

      • 소프트웨어 시스템을 구성할 때, 이벤트(event)의 발생과 처리 흐름을 중심으로 설계하는 아키텍처 패턴
        • 여기에서 이벤트는 시스템 내부 혹은 외부에서의 상태 변화, 행동의 완료, 메시지 도착 등 의미있는 변화(change)를 가리킴
        • EDA에서 이벤트를 발생시키는 주체(Producer)와 이벤트를 처리하는 주체(Consumer)가 느슨하게 분리되어 있으며, 이 둘은 이벤트 메시지를 매개로 비동기적으로 통신
      • 즉, 이벤트가 발생하면 어떤 컴포넌트가 즉각적으로 반응(react)할 수 있도록 설계된 구조
  • 구독 관리 로직 설계
    • 다음의 요구사항에 맞게 이벤트 이름별로 콜백 배열 관리
      • 한 이벤트에 여러 개의 리스너를 등록할 수 있다.
      • 구독한 순서대로 실행된다.
      • 구독 해제 시 해당 콜백만 처리한다.
  • emit 실행 시 동기적으로 이벤트 호출
    • 해당 이벤트의 모든 콜백 실행
    • 실행한 결과를 콜백이 등록된 순서대로 배열로 반환
  • 구독 해제 구현
    • subscribe가 반환하는 객체 내에 unsubscribe가 있음
    • unsubscribe는 이미 등록된 콜백만 제거하도록 동작
    • unsubscribe 호출 시 undefined 반환(문제의 요구 사항에 작성되어 있음)

2695. Array Wrapper

객체지향 프로그래밍의 개념을 활용하여 메서드 재정의 하기

  • 클래스 설계
    • ArrayWrapper라는 클래스를 만들어, 숫자 배열을 클래스 내부에 저장
    • 배열 조회/변경 기능을 객체 내부에 캡슐화
  • 메서드 재정의
    • + 연산자 사용 시 두 배열의 합 계산하도록 valueOf 메서드 재정의
    • String(obj) 호출 시 객체를 문자열로 변환하도록 toString 메서드 재정의

2726. Calculator with Method Chaining

객체지향 프로그래밍으로 메서드 체이닝 구현하기

  • 메서드 체이닝 구현
    • 각 메서드는 this를 반환해야 연속된 연산을 한 줄로 작성할 수 있음
  • divide 메서드 예외 처리
    • 값이 0인 경우 에러 던지기

0개의 댓글