Visitor Pattern
객체 구조는 그대로 두고, 그 위에서 수행할 연산을 별도 Visitor로 분리하는 패턴. 새 연산을 추가할 때마다 모든 클래스를 고치는 일을 막는다.
객체 구조는 그대로 두고, 그 위에서 수행할 연산을 별도 Visitor로 분리하는 패턴. 새 연산을 추가할 때마다 모든 클래스를 고치는 일을 막는다.
객체들이 서로를 직접 참조하지 않고 중재자를 통해서만 소통하게 만드는 패턴. 다대다로 얽힌 의존을 중재자 하나로 모아 결합을 푼다.
이미 만들어진 객체를 복제해 새 객체를 얻는 패턴. 생성 비용이 크거나 구체 타입을 모른 채 같은 종류를 찍어내야 할 때, new 대신 clone()을 부른다.
lazy.nvim의 플러그인 spec을 읽고 쓸 때 만나는 필드들 — lazy·keys·cmd·ft·priority(언제 로드), init·opts·config(로드 시 동작), dependencies·optional·branch(관계) — 를 실행 순서와 함께 정리한다. opts의 테이블 vs 함수 차이와 흔한 함정 포함.
GoF 23개 패턴을 생성 → 구조 → 행위 세 갈래로, 각 갈래는 입문 → 중급 난이도로 쌓아 올리는 학습 순서. 이 블로그의 패턴 글을 갈래별로 큐레이션하고, 갈래를 가로지르는 읽기 순서를 정리했다. 자주 헷갈리는 쌍과 빈도 낮은 패턴 묶음은 부록으로 분리.
한 클래스의 인스턴스를 단 하나만 보장하고 전역 접근점을 제공하는 패턴. 자주 쓰이지만 안티패턴 비판도 많아 DI 대안과 함께 봐야 한다.
컬렉션 내부 구조를 노출하지 않고 원소를 순서대로 꺼내는 방법을 제공하는 패턴. 현대 언어는 거의 내장하고 있다.
복잡한 서브시스템 앞에 단순한 진입점을 둬 클라이언트의 결합도를 낮추는 패턴. Adapter는 모양 변환, Facade는 단순화가 목적.
단일 객체(Leaf)와 묶음 객체(Composite)를 같은 인터페이스로 다뤄 트리 구조를 균일하게 처리하는 패턴. 파일 시스템·DOM의 본체.
요청을 처리할 수 있는 핸들러들을 사슬로 연결해 차례로 시도하는 패턴. HTTP 미들웨어, 결재 흐름의 본체.