[Design Pattern] 0. 개요

김민경·2025년 6월 15일

Design Pattern

목록 보기
1/9
post-thumbnail

디자인 패턴이란?

소프트웨어를 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 "규약" 형태로 만들어 놓은 것

특징

  1. 재사용 가능한 해결책

    특정 문제의 검증된 해결책을 제공하므로, 새로운 코드를 작성할 때 재사용하여 개발시간 단축

    매번 새롭게 설계하기보다는 이미 선대가 고민해놓은 디자인 패턴을 활용하여 안정적이고 최적화하기 좋은 해결책으로 사용 가능

  2. 유연성

    시스템의 변경이나 확장에 유연하게 대처할 수 있도록 설계

  3. 유지보수성

    코드의 구조를 명확하게 하고, 모듈성을 높여 유지보수 용이

  4. 의사소통

    개발자들 간의 공통된 용어를 제공하여 의사소통 원활

유래

1987년에 작성된 "Using Pattern Languages for Object-Oriented Programs"를 통해 제안

이후 1995년에 이른바 사인방(Gang of Four)이 쓴 23개의 디자인 패턴을 수록한 "Design Patterns: Elements Of Reusable Object-Oritented Sotfware)라는 책이 출판되고 나면서 유명해짐.

분류

현재에는 수천여 개의 패턴이 발표되어 있지만, 주로 GoF가 제시한 방법으로 크게 3가지 분류

  • 생성(Creational) 패턴

    • 객체 생성 과정과 관련된 패턴
    • 객체 생성 과정을 캡슐화하여, 객체가 어떻게 생성되고 구성되는지를 클라이언트 코드와 분리함으로써 시스템의 유연성과 재사용성을 높임
    • ex) Singleton, Factory Method ..
  • 구조(Structural) 패턴

    • 클래스나 객체를 더 큰 구조로 조합하는 패턴
    • 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운 기능을 제공
    • ex) Decorator, Proxy, Adaptor, Revealing Module ..
  • 행위(Behavioral) 패턴

    • 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
    • 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지,
      또 그렇게 하면서도 객체 사이의 결합도를 최소화하여
      객체 간의 상호 작용 및 책임 할당을 효율적으로 처리하는 데 중점을 둠
    • ex) Observer, Template Method, Strategy, Iterator ..

알고리즘과 차이점

디자인 패턴과 알고리즘은 모두 소프트웨어 개발에서 중요한 역할, But

  • 알고리즘 : 구체적인 문제 해결에 초점
  • 디자인 패턴 : 소프트웨어 설계의 전반적인 구조와 관련된 문제 해결에 더 큰 영향
profile
뭐든 기록할 수 있도록

0개의 댓글