문제를 풀면서 문제의 의도와 연관된 개념에 대해 정리합니다.
이벤트 기반 시스템의 작동 원리 직접 구현하기
(Node.js 의 EventEmitter 처럼 동작하는 최소한의 이벤트 엔진 구현)
Event-driven architecture(EDA)
- 소프트웨어 시스템을 구성할 때, 이벤트(event)의 발생과 처리 흐름을 중심으로 설계하는 아키텍처 패턴
- 여기에서 이벤트는 시스템 내부 혹은 외부에서의 상태 변화, 행동의 완료, 메시지 도착 등 의미있는 변화(change)를 가리킴
- EDA에서 이벤트를 발생시키는 주체(Producer)와 이벤트를 처리하는 주체(Consumer)가 느슨하게 분리되어 있으며, 이 둘은 이벤트 메시지를 매개로 비동기적으로 통신
- 즉, 이벤트가 발생하면 어떤 컴포넌트가 즉각적으로 반응(react)할 수 있도록 설계된 구조
subscribe가 반환하는 객체 내에 unsubscribe가 있음unsubscribe는 이미 등록된 콜백만 제거하도록 동작unsubscribe 호출 시 undefined 반환(문제의 요구 사항에 작성되어 있음)객체지향 프로그래밍의 개념을 활용하여 메서드 재정의 하기
ArrayWrapper라는 클래스를 만들어, 숫자 배열을 클래스 내부에 저장+ 연산자 사용 시 두 배열의 합 계산하도록 valueOf 메서드 재정의String(obj) 호출 시 객체를 문자열로 변환하도록 toString 메서드 재정의객체지향 프로그래밍으로 메서드 체이닝 구현하기
this를 반환해야 연속된 연산을 한 줄로 작성할 수 있음divide 메서드 예외 처리