래퍼(어댑터) 패턴
노트 유형: Cloze
Text
래퍼 패턴(GoF 책에서의 이름: {{c1::어댑터}} 패턴): 기존 클래스를 다른 클래스로 감싸 원하는 시그니처로 바꿔 제공 — 감싸는 방식은 {{c2::컴포지션}}(기존 클래스의 개체를 멤버 변수로)
- 용도: {{c3::코드를 직접 수정할 수 없는 클래스(남의 라이브러리)를 커스터마이징}}하거나 {{c4::기능을 추가}}할 때
- 핵심 이득: 내부 구현(라이브러리)을 교체해도 {{c5::래퍼 내부만 수정하면 되고 클라이언트 코드는 바뀌지 않음}}
Back Extra
- 확장된 용도: 내부 개체를 클라이언트에게 노출하지 않기 — 내부 개체의 일부 또는 변형만 DTO로 공개(toDto() 변환, “필요 이상의 데이터를 반환하지 말자”). 엄밀히 말하면 어댑터 패턴은 아니지만 목적이 비슷함
- 코드 예(클라이언트·교체 후 코드 포함): 801-004-016의 Graphics 재작성 문제 https://pocu-site.pages.dev/pocu-note/COMP2500/801-exam/801-004-exercise-final/801-004-016-wrapper-and-proxy/
출처: https://pocu-site.pages.dev/pocu-note/COMP2500/012-design-patterns/012-011-wrapper-pattern/