반응형
무엇인가?
리액티브 프로그래밍은 데이터 스트림에서의 변화를 탐지하고 이를 전파하는 이벤트를 받아 실행하는 형태로 동작하는 선언적 프로그래밍 패러다임이다
데이터 스트림
데이터 스트림이란 일관된 신호의 흐름을 의미한다
예를 들어, Unity의 Update 혹은 FixedUpdate가 일정한 주기로 호출되는 것과 비슷하다
이때 특정 입력(인풋)이 들어오거나 객체의 상태가 변하면, 신호의 흐름에 새로운 값이 추가되는 것이라고 볼 수 있다
주요 특징
선언형 접근
리액티브 프로그래밍은 무엇을 해야하는지 기술하며, 이는 명령형 프로그래밍의 어떻게 해야하는지와 대조된다. 이러한 접근 방식은 코드의 가독성을 높일 수 있다
// 명령형
List<int> numbers = new List<int> { 1, 2, 3 };
// 새로운 값이 추가될 때마다 직접 확인해야 함
numbers.Add(4);
Console.WriteLine(numbers[numbers.Count - 1]); // 새 값 출력
// 선언형
Subject<int> numberStream = new Subject<int>();
// 새로운 데이터가 추가될 때마다 자동으로 출력
numberStream.Subscribe(num => Console.WriteLine($"새로운 값: {num}"));
// 데이터 추가
numberStream.OnNext(1);
numberStream.OnNext(2);
numberStream.OnNext(3);
이벤트 전파
데이터의 변경이 발생하면, 그 변화를 구독한 모든 부분에 이벤트가 전달된다. 즉, 데이터가 변경될 때마다 자동으로 반응하고 업데이트된다
// 일반적인 방식
void OnButtonClick() { Console.WriteLine("버튼이 클릭됨!"); }
button.Click += OnButtonClick;
// 리액티브 방식
Observable.FromEventPattern(button, "Click")
.Subscribe(_ => Console.WriteLine("버튼이 클릭됨!"));
사용처
위와 같은 특징으로 인해 UI 이벤트, 실시간 데이터 처리, 네트워크 응답 등에서 효과적으로 사용할 수 있다
Reference
Reactive programming - Wikipedia
'프로그래밍 > 프로그래밍 이론' 카테고리의 다른 글
오브젝트 풀(Object Pool) 패턴 (0) | 2025.03.21 |
---|---|
MVP(Model-View-Presenter) 패턴 (0) | 2025.03.21 |
싱글톤(Singleton) 패턴 (0) | 2025.03.21 |
소프트웨어 디자인 패턴이란? (0) | 2025.03.21 |
객체지향적 프로그래밍의 장점 (0) | 2025.03.12 |