디자인 패턴
되풀이되는 설계 문제와 그 해법에 이름을 붙인 것이다. 건축가 크리스토퍼 알렉산더의 패턴 언어에서 시작해 GoF의 23가지로 소프트웨어에 자리 잡았다. 패턴마다 문제, 구조, 예시 코드, 쓰는 자리와 함정을 정리했다.
응집·결합과 SOLID 같은 설계 원칙은 소프트웨어 공학, 시스템 단위의 패턴(서킷 브레이커, 사가, 이벤트 소싱)은 시스템 설계 노트에 있다.
기초
패턴이란 무엇이고 어디서 왔나
생성 패턴
객체를 만드는 일을 감춘다
구조 패턴
클래스와 객체를 엮어 더 큰 구조를 만든다
- 구조 패턴 1: 어댑터·브리지·컴포지트·데코레이터인터페이스를 맞추고, 추상과 구현을 떼고, 트리로 묶고, 기능을 겹겹이 씌우는 법이다.어댑터 · 브리지 · 컴포지트 · 데코레이터 · 클래스 어댑터와 객체 어댑터 · 클래스 폭발 · 투명성과 타입 안전성 · Python 데코레이터 문법과의 차이
- 구조 패턴 2: 퍼사드·플라이웨이트·프록시복잡한 것을 한 창구로, 많은 것을 가볍게, 진짜 대신 대리인을 세우는 법이다.퍼사드 · 플라이웨이트 · 프록시 · 고유 상태와 외부 상태 · Integer 캐시와 문자열 인턴 · 동적 프록시 · 지연 로딩 · 구조 패턴 비교
행위 패턴
객체 사이의 책임과 대화를 나눈다
- 행위 패턴 1: 전략·옵저버·커맨드·상태·템플릿 메서드알고리즘을 갈아 끼우고, 변화를 알리고, 요청을 객체로 만들고, 상태마다 행동을 바꾸는 법이다.전략 · 옵저버 · 커맨드 · 상태 · 템플릿 메서드 · 할리우드 원칙 · 훅 메서드 · 발행-구독 · 리스너 해제 · 실행 취소와 다시 실행 · 상태 기계
- 행위 패턴 2: 이터레이터·중재자·메멘토·책임 연쇄·방문자·인터프리터순회를 감추고, 대화를 한곳에 모으고, 상태를 저장하고, 요청을 넘기고, 구조 위에 연산을 얹는 법이다.이터레이터 · 중재자 · 메멘토 · 책임 연쇄 · 방문자 · 인터프리터 · fail-fast 반복자 · 이중 디스패치 · 패턴 매칭 switch · 되돌리기 두 방식 · 행위 패턴 비교
GoF 너머
그 뒤에 자리 잡은 패턴들