본문 바로가기
프로그래밍/JAVA

Java 디자인 패턴 완벽 정리 | 개념, 종류, 사용 이유

by 곰 옥수수 2025. 3. 1.
728x90
반응형

1. 디자인 패턴(Design Pattern)이란?

디자인 패턴(Design Pattern)소프트웨어 설계에서 자주 발생하는 문제들을 해결하기 위한 재사용 가능한 설계 방식이다.
즉, 반복적으로 발생하는 문제에 대한 최적의 해결책을 정리한 설계 템플릿이라고 볼 수 있다.

디자인 패턴은 객체 지향 프로그래밍(OOP)의 4대 원칙(추상화, 캡슐화, 상속, 다형성)을 기반으로 하며,
코드의 유지보수성, 확장성, 가독성을 높이는 데 도움이 된다.


2. 디자인 패턴을 사용하는 이유

Java에서 디자인 패턴을 사용하는 이유는 다음과 같다.

1) 코드의 재사용성 증가

  • 검증된 설계 방식이므로 동일한 문제를 해결할 때 다시 사용할 수 있다.

2) 유지보수성 향상

  • 코드가 모듈화되면서 변경이 필요할 때 특정 부분만 수정하면 된다.

3) 코드의 가독성 향상

  • 패턴을 사용하면 코드의 역할과 흐름을 쉽게 이해할 수 있음.
    예를 들어, Singleton 패턴을 사용하면 "이 클래스는 하나의 인스턴스만 유지하는구나!"라고 쉽게 인식할 수 있다.

4) 확장성과 유연성 증가

  • 디자인 패턴을 사용하면 변경에 강한 구조를 설계할 수 있다.
    예를 들어, Factory 패턴을 사용하면 새로운 객체 타입을 추가할 때 기존 코드를 수정할 필요가 없다.

5) 코드 중복 방지

  • 동일한 문제를 해결하기 위한 반복적인 코드 작성을 줄여준다.

3. 디자인 패턴의 종류

디자인 패턴은 크게 3가지 유형으로 분류된다.
1) 생성(Creational) 패턴
2) 구조(Structural) 패턴
3) 행동(Behavioral) 패턴

 

각 패턴은 특정 상황에서 유용하게 사용될 수 있다.


📌 1. 생성 패턴 (Creational Patterns)

객체 생성 과정을 캡슐화하여 객체 생성을 효율적으로 관리하는 패턴

패턴 이름설명사용 사례

Singleton 하나의 객체만 생성하여 공유 데이터베이스 연결, 설정 클래스, 로깅 시스템
Factory Method 객체 생성을 서브 클래스에서 결정 Spring BeanFactory, LoggerFactory
Abstract Factory 관련 객체 군을 생성하는 팩토리 GUI 컴포넌트 (Mac, Windows UI)
Builder 복잡한 객체 생성을 단계적으로 진행 StringBuilder, Lombok @Builder
Prototype 객체를 복사하여 생성 (Clone) Object.clone()

📌 2. 구조 패턴 (Structural Patterns)

클래스와 객체를 조합하여 더 큰 구조를 형성하는 패턴

패턴 이름설명사용 사례

Adapter 서로 다른 인터페이스를 연결 Arrays.asList(), JDBC
Bridge 구현과 추상화 분리 GUI 툴킷, 드라이버 인터페이스
Composite 객체를 트리 구조로 구성 파일 시스템 (File, Folder)
Decorator 동적으로 기능 추가 BufferedReader, FilterStream
Facade 복잡한 시스템을 간단한 인터페이스로 제공 Spring JdbcTemplate
Flyweight 공유 객체를 사용하여 메모리 절약 캐싱 시스템, 폰트 렌더링
Proxy 접근을 제어하는 객체 제공 Spring AOP, Hibernate Lazy Loading

📌 3. 행동 패턴 (Behavioral Patterns)

객체 간의 상호작용을 정의하여 작업을 효율적으로 수행하는 패턴

패턴 이름설명사용 사례

Observer 상태 변화가 있을 때 자동으로 업데이트 Spring EventListener
Strategy 알고리즘을 동적으로 변경 가능 Comparator, Spring Security
Command 명령을 객체로 캡슐화 Runnable, ThreadPoolExecutor
Chain of Responsibility 요청을 여러 객체가 처리하도록 구성 Servlet Filter, Spring Interceptor
Mediator 객체 간의 직접적인 의존성을 줄임 MVC Controller
State 객체 상태에 따라 행동이 변경됨 TCP 연결 상태 (CONNECTING, CLOSED)
Template Method 알고리즘 구조를 정의하고 세부 구현을 하위 클래스에 위임 HttpServlet

4. 결론

✅ 디자인 패턴은 반복되는 소프트웨어 설계 문제를 해결하는 최적의 해결책
✅ 유지보수성을 높이고, 가독성을 향상시키며, 코드의 재사용성을 증가시킴
✅ 3가지 유형으로 나뉨: 생성 패턴, 구조 패턴, 행동 패턴
✅ Spring 프레임워크에서도 디자인 패턴이 널리 사용됨 (Singleton, Factory, Proxy 등)


패턴들을 더 자세히 알아보자.

1. 싱글톤(생성패턴)

 

Java 싱글톤 패턴 완벽 정리! 개념부터 구현까지 총정리 (Singleton Pattern)

1. 싱글톤 패턴이란?싱글톤 패턴(Singleton Pattern)은 클래스의 인스턴스를 오직 하나만 생성하도록 제한하고, 전역적으로 접근할 수 있도록 제공하는 디자인 패턴입니다. 객체가 여러 개 생성되는

bears-paw.tistory.com

 

 

728x90
반응형

댓글