본문 바로가기
소프트웨어

[소프트웨어] 디자인 패턴 개요 및 종류

by 정공자씨 2024. 1. 15.

디자인 패턴


 

디자인 패턴이란? =  GoF 분류

  • 각 모듈의 세분화된 역할이나 모듈들 간의 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현방안을 설계할 때 참조 할 수 있는 전형적인 해결 방식 또는 예제를 의미
  • 디자인 패턴을 재사용할 수 있는 기본형 코드들이 포함
  • 디자인 패턴은 한 패턴에 변형을 가하거나 특정 요구사항을 반영하면 유사한 형태의 다른 패턴으로 변화되는 특징
  • 1995년 GoF(Gang of Four)라고 불리는 에릭 감마, 리차드 헬름, 랄프 존슨, 존블리시디스가 처음으로 구체화하고 체계화함 
  • 패턴 유형별 분류 : 생성패턴, 구조 패턴, 행위 패턴

 

 

디자인 패턴 유형별 분류

① 생성 패턴
② 구조 패턴
③ 행위 패턴

 

1. 생성 패턴

 

[ 의미]

  • 객체의 생성과 참조 과정을 캡슐화하여
  • 객체가 생성되거나 변경되어도 프로그램의 구조에 영향을 크게 받지 않도록하여 프로그램에 유연성을 더함

[패턴의 종류]

생성 패턴 종류 : 추상 팩토리, 빌더, 팩토리 메소드, 포로토타입, 싱글톤

 

 


 

 

 

2. 구조 패턴

퍼싸트 구조 패턴

[ 의미]

  • 클래스나 객체들을 조합하여 더 큰 구조로 만들 수 있게 해주는 패턴으로
  • 구조가 복잡한 시스템을 개발하기 쉽게 해줌

 

[패턴의 종류]

  구조 패턴 종류 : 어댑터, 브리지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시

 

 


 

 

 

3. 행위 패턴

 

[의미]

  • 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴이며
  • 하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하면서 결합도를 최소화 할 수 있도록 도와줌

 

[패턴]

  행위 패턴 종류 : 책임 연쇄, 커맨드, 인터프리터, 반복자,  중재자, 메멘토,  옵서버, 상태, 전략, 템플릿 메소드, 방문자

 

 


 

 

공통 모듈

  • 자주 사용되는 계산식이나 매번 필요한 사용자 인증처럼 같은 기능들이 공통 모듈로 구성될 수 있음
  • 모듈의 재사용성 확보와 중복 개발 회피를 위해, 설계 과정에서 공통 부분을 식별하고 명세를 작성할 필요가 있음
공통 모듈 명세 기법을 위해 필요한 사항
  • 정확성(correctness)
  • 명확성(clarity) : 기능을 이용할 때, 명확하게 작성
  • 완전성(completeness) : 구현작업을 위해 필요한 기능을 모두(완전) 명세서에 기입
  • 일관성(consistency) : 각 기능들 간에 상호 충돌이 일어나지 않도록 일관적으로 만들기
  • 추적성(traceability) : 요구 사항을 제대로 수행했는지 언제든지 추적 가능

 

 


 

 

 

재사용

  • 소프트웨어 비용과 개발 시간을 절약하기 위해, 이미 개발된 기능들을 파악하고 재구성하여, 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화시키는 작업
  • 기존 소프트웨어를 활용하므로, 수정하거나 이해하기 위한 노력이 필요

 

[ 재사용 가능한 기능 ]

함수, 객체,  컴포넌트, 응용 프로그램(application)

 

함수와 객체

  • 클래스나 메소드 단위의 소스 코드를 재사용

컴포넌트

  • 컴포넌트 자체에 대한 수정없이 인터페이스를 통해 통신하는 방식으로 재사용

애플리케이션

  • 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식으로 재사용