소프트웨어 공학 공부

소프트웨어 공학 9주차 (디자인 패턴)

NaZZU 2025. 4. 29. 17:25

디자인 패턴

  • 자주 사용하는 설계 형태를 정형화하여 이를 유형별로 설계 탬플릿을 만들어 둔 것
  • 많은 개발자들이 경험상 체득한 설계 지식을 검증하고, 이를 추상화하여 일반화한 템플릿

장점

  • 개발자(설계자) 간의 원할한 의사소통
  • 소프트웨어 구조 파악 용이
  • 재사용을 통한 개발 시간 단축
  • 설계 변경 요청에 대한 유연한 대처

 

종류 : 27개

  • 기본 패턴 : 4개
  • 생성 패턴 : 5개
  • 구조 패턴 : 7개
  • 행위 패턴 : 11개

 

기본 패턴

  • 객체지향 프로그램 에서 흔해 쓰는 기본적인 패턴
  • 개념 실체 패턴 
    • 개념 클래스를 실체 클래스에서 분리하는 것은 중복되는 정보를 저장하지 않기 위해서이다
  • 플레이어 역할 패턴 : 플레이어가 환경에 따라 다른 역할을 해야 할 때
  • 위임 패턴 : 다른 클래스의 오퍼레이션에 작업을 요청
  • 계층 구조 패턴 : 회사의 조직도, 파일 구조, 구문 트리 등 계층 구조를 다룰 때 필요

생성 패턴

  • 팩토리 패턴
  • 싱글턴 패턴
    1. 생성자를 private으로 선언
    2. 객체 생성을 static으로 선언
    3. getInstance()를 만들어 외부에서 사용하도록 함
    4. getInstance() 메서드를 동기화
  • 프로토타입 패턴
  • 빌더 패턴
  • 추상 팩토리 패턴

구조 패턴

  • 데코레이터 패턴
  • 어댑터 패턴
  • 컴포지트 패턴
  • 브리지 패턴
  • 퍼사드 패턴
  • 플라이웨이트 패턴
  • 프록시 패턴

행위 패턴

  • 전략패턴
  • 반복자 패턴
  • 견본 패턴
  • 책임 체인 패턴
  • 중재자 패턴
  • 통역자 패턴
  • 상태 패턴
  • 옵서버 패턴
  • 방문자 패턴
  • 커맨트 패턴
  • 기념 패턴