[CS] 디자인 패턴이란?

최지나·2023년 10월 21일
2

CS

목록 보기
6/55

디자인 패턴 정의

디자인 패턴은 프로그램을 설계할 때 발생하는 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 "규약" 형태로 만들어 놓은 것이다. 이러한 패턴을 기반으로 하여 라이브러리나 프레임워크가 생성된다.

1. 라이브러리와 프레임워크의 기반

  • 디자인 패턴을 기반으로 하는 라이브러리나 프레임워크는 특정 기능을 모듈화하여 공통으로 사용할 수 있도록 만들어진다. 몇 가지 라이브러리와 프레임워크의 예시는 다음과 같다:

  • 라이브러리 예시

    • Vue.js: MVVM 패턴을 기반으로 한 프론트엔드 라이브러리
    • Axios: 네트워크 요청을 처리하는 라이브러리
    • Passport: 손쉬운 로그인을 지원하는 라이브러리
  • 프레임워크 예시

    • Spring Web: MVC 패턴을 기반으로 한 자바 웹 프레임워크
    • Django: Python으로 작성된 웹 애플리케이션을 빠르게 개발하기 위한 프레임워크

라이브러리와 프레임워크의 차이

라이브러리

  • 폴더명, 파일명에 대한 규칙이 없고 자유도가 높음. Custom 가능.
  • 필요할 때마다 라이브러리 호출 혹은 설치 가능.

프레임워크

  • 폴더명, 파일명에 대한 규칙이 있으며 라이브러리에 비해 엄격하다. 제어의 역전.
  • 코드에 대한 통제권이 개발자가 아닌 프레임워크에 있다.

2. 디자인 패턴의 종류

디자인 패턴은 크게 생성 패턴, 구조 패턴, 행동 패턴으로 분류된다.

생성 패턴

  • 정의: 객체 생성 방법이 들어간 디자인 패턴. 클래스로부터 객체를 어떻게 생성할 것인가에 대한 패턴.
  • 예시: 싱글톤, 팩토리, 추상팩토리, 빌더, 프로토타입 패턴

구조 패턴

  • 정의: 객체나 클래스 등으로 큰 구조를 만들 때 유연하고 효과적으로 만드는 방법이 들어간 디자인 패턴.
  • 예시: 프록시, 어뎁터, 브릿지, 복합체, 데코레이터

행동 패턴

  • 정의: 객체나 클래스 간의 알고리즘, 책임 할당에 관한 디자인 패턴. 한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배할 것인가에 대한 패턴.
  • 예시: 이터레이터, 옵저버, 전략, 책임연쇄, 커맨드 패턴

기타

  • Flux 패턴, MVC 패턴, MVVM 패턴


REF

profile
의견 나누는 것을 좋아합니다 ლ(・ヮ・ლ)

0개의 댓글