[Design Pattern] 디자인 패턴

2025. 8. 9. 09:48·Java/디자인패턴

디자인 패턴(Design Pattern)

디자인 패턴은 개발하면서 반복적으로 발생하는 문제들을 어떻게 해결할 것인지에 대한 해결 방안이다.

패턴은 새로운 것이 아닌 "비슷한 문제를 다루면서 얻은 노하우가 매우 잘 정리된 것"이다.

이러한 패턴은 UML 도구인 클래스 다이어그램, 순차 다이어그램 등으로 구조와 동작을 가시적으로 표현할 수 있다.

 

패턴은 총 23가지이며, 3가지 종류(생성 패턴 / 구조 패턴 / 행위 패턴)로 나뉜다.

 


 

생성 패턴(Creational Pattern)

생성 패턴은 객체 인스턴스를 생성하는 패턴이다.

객체 생성과 그 참조 과정을 캡슐화하여 코드의 유연성과 재사용성을 높여준다.

5가지의 생성 패턴이 존재한다.

 

싱글톤(Singleton) 한 클래스의 인스턴스를 한 번만 생성하여 전역에서 접근 가능하게 하는 패턴
팩토리 메소드(Factory Method) 객체 생성 인터페이스만 제공하고, 실제 인스턴스 생성은 하위 클래스에서 담당하는 패턴
추상 팩토리(Abstract Factory) 관련된 객체들의 집합을 생성하는 인터페이스를 제공하고, 구체적인 팩토리 클래스는 하위 클래스에서 생성하는 패턴
빌더(Builder) 복잡한 객체를 단계 별로 구성하여 생성하는 패턴
프로토타입(Prototype)  기존 객체를 복제해서 새 객체를 생성하는 패턴

 


 

구조 패턴(Structural Pattern)

구조 패턴은 클래스나 객체를 조합하여 더 큰 구조를 형성하는 패턴으로,

총 7개의 패턴이 있다.

 

어댑터(Adpater) 호환성이 없는 클래스의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
브리지(Bridge) 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴
컴포지트(Composite) 객체들의 관계를 트리 구조로 구성하여 전체-부분 계층을 표현하는 패턴
데코레이터(Decorator) 객체에 동적으로 새로운 책임을 추가하여 기능들을 확장할 수 있는 패턴
퍼싸드(Facade) 복잡한 하위 클래스들에 대해서 간단한 인터페이스를 제공하는 패턴
플라이웨이트(FlyWeight) 인스턴스의 공유를 통해 메모리를 절약하는 패턴
프록시(Proxy) 접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할을 제공하는 패턴

 

 


 

행위 패턴(Behavior Pattern)

행위 패턴은 객체들이 서로 상호작용(통신)하는 방법이나 책임을 분배하는 방법을 정의한 패턴이다.

책임을 분배함으로써 결합도를 최소화하는 것이 목표이며, 총 11개의 패턴이 있다.

 

책임 연쇄(Chain of Responsibility) 둘 이상의 객체가 서로 연결되어 책임이 차례대로 넘어가는 패턴
커맨드(Command) 요청에 필요한 정보를 객체로 캡슐화하여 로그에 기록하는 패턴
인터프리터(Interpreter) 언어의 문법 표현을 정의하는 패턴
반복자(Iterator) 접근이 잦은 객체는 동일한 인터페이스를 사용하는 패턴
중재자(Mediator) 수많은 객체들 간의 복잡한 상호작용을 캡슐화해서 객체로 정의하는 패턴
메멘토(Memento) 특정 시점의 상태를 객체화하여, 필요할 때 해당 시점의 객체로 되돌리는 패턴(undo 기능)
옵서버(Observer) 객체의 상태의 변화를 상속 중인 다른 객체들에게 알리는 패턴
상태(State) 객체의 상태에 따라 이벤트(행위)를 달리해야 하는 패턴
전략(Strategy) 알고리즘을 객체의 행위로 캡슐화하여, 동일한 행동을 다른 알고리즘으로 교환할 수 있는 패턴
템플릿 메소드(Template Method) 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 패턴
(생성 패턴의 팩토리 메소드와 유사)
방문자(Visitor) 객체의 구조와 기능을 분리하여 구조를 변경하지 않고 새로운 기능을 추가할 수 있는 패턴

 


 

디자인 패턴의 수가 정말 많다! 하지만 이 패턴들은 모두 신뢰성있고 융통성있는 설계를 지향한다.

앞으로 하나씩 차차 알아가보려 한다.

 

:)

 

출처

https://ittrue.tistory.com/550

https://oobwrite.com/entry/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4Design-Pattern-%EC%B4%9D%EC%A0%95%EB%A6%AC-23%EA%B0%80%EC%A7%80-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%A0%95%EC%9D%98-%EC%A2%85%EB%A5%98-%EC%9E%A5%EB%8B%A8%EC%A0%90

https://www.hanbit.co.kr/channel/view.html?cmscode=CMS8616098823

https://yelkim0210.tistory.com/130

'Java > 디자인패턴' 카테고리의 다른 글

[Design Pattern] SOLID 원칙  (1) 2025.08.05
'Java/디자인패턴' 카테고리의 다른 글
  • [Design Pattern] SOLID 원칙
jjangsudiary
jjangsudiary
jjangsudiary 님의 블로그 입니다.
  • jjangsudiary
    jjangsudiary 님의 블로그
    jjangsudiary
  • 전체
    오늘
    어제
    • 분류 전체보기 (81) N
      • 이모저모 (0)
        • 회고 (0)
      • Development (17) N
        • 개발 공부 (14) N
        • 프로젝트 (2)
      • Android (10)
        • Compose (1)
      • AI (15)
      • Computer Science (25)
        • 네트워크 (8)
        • 데이터베이스 (10)
        • 운영체제 (6)
        • 자료구조 (0)
        • 컴퓨터구조 (1)
      • Java (9)
        • 디자인패턴 (2)
      • Spring (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    운영체제
    딥러닝
    TensorFlow
    db
    Python
    baekjoon
    database
    머신러닝
    os
    안드로이드
    Ai
    파이썬
    백준
    자바
    코딩 테스트
    java
    CS
    android
    프로그래머스
    인공지능
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
jjangsudiary
[Design Pattern] 디자인 패턴
상단으로

티스토리툴바