RDD(Responsibility-Driven Design)
객체의 책임과 협업에 초점을 두는 책임 주도 설계로 시스템의 동작을 명확하게 이해하고 모델링 되는 객체의 실제 책임과 일치하는 설계를 지향한다.
특징
- 책임: 객체는 특정 작업이나 동작을 담당한다. 입력 처리, 계산 수행, 상태 유지 또는 다른 개체와의 상호 작용이 포함될 수 있다.
- 협업: 원하는 시스템 동작을 달성하기 위해 객체 간의 협업을 촉진한다. 객체는 정보를 요청 또는 제공하거나 작업을 수행하기 위해 메시지를 전송하여 통신하고 함께 작업한다.
- 메시지 전달: 객체는 메시지 전달을 통해 서로 통신한다. 메시지 전달을 통해 객체는 상호 작용하고 책임을 이행할 수 있다.
- 캡슐화: 객체 내 동작과 데이터를 캡슐화 하는 것을 강조한다. 캡슐화는 객체가 자체 데이터와 동작을 제어할 수 있도록 하여 모듈성과 유지보수성을 높인다.
카페를 예로 들어 설명하자면,
손님, 직원, 바리스타는 주문, 계산, 제조라는 각 역할(책임)을 가지며, 서로 메세지를 주고받으며 협업한다.
객체의 행동이 중요하기 때문에 내부적으로 어떻게 동작하는지는 알 필요가 없다(캡슐화). 예를 들어 직원이 주문을 어떻게 기록하는지, 바리스타는 커피를 어떤 순서, 방법으로 제조하는지는 오로지 그 역할의 몫이다. 잘 못된 커피가 제조되었다면 누구에게서 문제가 발생했는지 확인하고 그 역할의 동작만 수정하면 된다!
마치며
'객체지향의 사실과 오해'라는 책을 읽는 중인데, RDD를 강조하는 챕터가 있어서 공부해 보았다. 객체지향하면 딱 떠오르는 패턴인 것 같다.
카페 예시는 책에서 객체와 책임을 설명할 때 사용한 예제를 차용했고, RDD에 관한 내용은 ChatGPT를 사용해 정리했는데 매우 만족스럽다. 공부할 때 구글링도 좋지만 ChatGPT도 자주 애용해야겠다.
'TIL' 카테고리의 다른 글
TIL 6: MVP(Minimum Viable Product) (0) | 2023.08.10 |
---|---|
TIL 5: DI란 (0) | 2023.07.22 |
TIL 3: Tech Spec (0) | 2023.07.07 |
TIL 2: Rendering (CSR, SSR) (0) | 2023.07.04 |
Today I Leaned, 블로그 시작 (0) | 2023.07.01 |