노트

행동 패턴

Behavioral Design Patterns

설계#pattern · 연결된 개념 10개

쉽게 말하면

행동 패턴은 객체들이 일을 어떻게 나눠 맡고 주고받을지 정해 둔 팀 작전표 모음이에요. 요청을 누가 받고 누구에게 넘길지, 상태가 바뀌면 누구에게 알릴지를 미리 약속해 두는 거죠.

비유가 깨지는 곳 작전표를 많이 안다고 좋은 팀이 되진 않아요. 조건문이 타입이나 상태를 반복해서 검사하거나 되돌리기가 필요한 것처럼 문제가 보일 때 꺼내요. 중재자가 규칙을 다 흡수해 거대해지지 않게도 조심해요.

객체 사이의 책임 분배와 대화 방식을 정리하는 패턴들. 요청 전달, 알고리즘 교체, 상태 변화, 알림, 작업 캡슐화 같은 문제를 다룬다.

  • 전략 패턴: 교체 가능한 알고리즘을 객체(또는 함수)로 뺀다
  • 옵저버 패턴: 상태 변화를 구독자들에게 알린다
  • 커맨드 패턴: 요청을 실행 가능한 객체로 포장한다
  • 상태 패턴: 현재 상태 객체가 행동을 결정한다
  • 템플릿 메서드 패턴: 알고리즘 뼈대는 고정하고 일부 단계만 바꾼다
  • 책임 연쇄 패턴: 처리자를 사슬로 이어 요청을 넘긴다
  • 이터레이터(Iterator): 내부 구조를 숨기고 순회 방법만 제공한다. 지금은 대부분 언어의 반복 프로토콜이 이 역할을 한다(이터레이터와 제너레이터)
  • 중재자(Mediator): 여러 컴포넌트가 서로 직접 대화하지 않고 중재자를 거치게 해 얽힘을 푼다(대화상자의 입력·버튼·체크박스 조율). 중재자가 모든 규칙을 흡수해 거대해지지 않게 한다. 공통 부모가 자식들의 상태를 들고 조율하는 React의 상태 끌어올리기(Lifting State Up)도 비슷한 모양이다
  • 메멘토(Memento): 캡슐화를 깨지 않고 상태 스냅샷을 저장해 되돌리기를 구현한다. 큰 객체라면 변경분만 저장하거나 기록 수를 제한한다
  • 방문자(Visitor): 여러 타입의 객체 구조에 새 연산을 자주 더해야 할 때, 연산을 구조 밖의 방문자 객체에 모은다(AST에 출력·타입 검사·코드 생성 추가). 대신 요소 타입이 늘면 모든 방문자를 고쳐야 한다

조건문이 타입이나 상태를 반복 검사한다면 state·strategy·다형성을, 작업을 저장·취소·재실행해야 한다면 command를 먼저 검토한다.

출처: Behavioral Design Patterns — Refactoring.Guru

연결된 개념

이 노트를 가리키는 문서

뜻이 가까운 노트

  • 언어적 안티패턴

    이름, 타입, 주석이 말하는 것과 코드가 실제로 하는 일이 어긋나는 것. 읽는 사람을 잘못된 추측으로 이끈다.

  • 어댑터 패턴

    쓸 수 있는 객체가 있는데 인터페이스가 맞지 않을 때, 중간에서 호출을 받아 실제 객체가 알아듣는 형태로 바꿔 주는 패턴. 전원 플러그 변환기와 같다.

  • 심플 디자인

    켄트 벡이 XP(Extreme Programming)에서 제시한 단순한 설계의 네 가지 규칙. 우선순위 순으로 ① 모든 테스트를 통과하고 ② 의도를 드러내고 ③ 중복이 없고 ④ 요소가 가장 적다. 마틴 파울러가 이렇게 정리한 형태가 널리 쓰인다.

  • 에이전트 루프

    LLM이 도구 호출을 요청하면 실행해 결과를 돌려주고, 도구 호출 없이 답할 때까지 반복하는 구조. 코딩 에이전트도 챗봇형 에이전트도 이 반복 위에 서 있다.

보기 옵션