본문으로 건너뛰기
Advertisement

17.1 디자인 패턴 개요

디자인 패턴(Design Pattern) 은 소프트웨어 개발에서 반복적으로 등장하는 문제들에 대한 검증된 해결책입니다. 마치 건축의 설계 도면처럼, 비슷한 상황에서 재사용 가능한 코드 구조와 설계 아이디어를 제공합니다.

GoF(Gang of Four)가 1994년 저서 "Design Patterns: Elements of Reusable Object-Oriented Software"에서 정리한 23개의 패턴이 표준으로 통용되며, 크게 3가지로 분류됩니다.

1. 왜 디자인 패턴을 배워야 하나?

  1. 공통 언어: "여기에 싱글톤 패턴 쓰자"처럼 팀원과 설계 의도를 빠르게 소통할 수 있습니다.
  2. 검증된 해결책: 수많은 개발자들이 이미 겪은 문제를 다시 처음부터 고민하지 않아도 됩니다.
  3. 유지보수 용이: 패턴을 따른 코드는 변경과 확장에 강합니다.
  4. 취업 면접: 디자인 패턴은 백엔드 개발자 면접의 단골 주제입니다.

2. 패턴의 3가지 분류

분류목적주요 패턴
생성 (Creational)객체 생성 방법을 캡슐화Singleton, Factory Method, Builder, Prototype, Abstract Factory
구조 (Structural)클래스/객체를 더 큰 구조로 조합Adapter, Decorator, Proxy, Facade, Composite
행동 (Behavioral)객체 간 책임 분배와 협력Strategy, Observer, Template Method, Command, Iterator

3. 자바에서 디자인 패턴

자바 표준 라이브러리에는 이미 수많은 패턴들이 사용되고 있습니다:

패턴자바 표준 라이브러리 예시
SingletonRuntime.getRuntime(), System
Factory MethodCalendar.getInstance(), List.of()
BuilderStringBuilder, Stream.Builder
IteratorIterator<E>, for-each 루프
ObserverEventListener, Observer (레거시)
StrategyComparator<T>, Runnable
DecoratorBufferedReader, Collections.unmodifiableList()
Proxyjava.lang.reflect.Proxy
AdapterArrays.asList(), InputStreamReader

다음 절에서 실무에서 가장 자주 사용하는 핵심 패턴들을 직접 구현하며 배웁니다.

Advertisement