[소프트웨어공학] 디자인 패턴

2021. 5. 28. 18:58·스터디/기타 (소공, 보안)
728x90

💡디자인 패턴이란?

소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학에서 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다. (출처 : 위키백과)

 

- SW를 설계 할 때 자주 발생하는 문제를 재사용하여 해결할 수있도록 하는 해결책

- 이미 만들어져 잘 되는 것을 처음부터 다시 만들 필요 X

- 패턴 : 각기 다른 SW 모듈이나 기능을 다양한 응용 SW 시스템을 개발할 때에도 서로 공통되는 설계 문제나 해결책에 공통점이 있다. 이러한 유사점을 패턴이라고 한다.

 

💡디자인 패턴 종류

GoF 디자인 패턴

- Gang of Fout 이라 불리는 사람들이 만듦

- 23가지의 디자인 패턴을 정리하고 각각의 디자인 패턴을 생성/구조/행위 3가지로 분류했다.

1) 생성 : 객체 생성 관련 패턴

2) 구조 : 클래스나 객체를 조합한 더 큰 패턴

3) 행위 : 객체나 클래스 사이 알고리즘 관련 패턴

 

GoF 디자인 패턴 종류

1) 생성 패턴

  • 싱글톤 : 전역 변수를 사용하지 않고 객체 하나만 생성하여 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
    •     장점 : 객체를 어디에서든지 참조 가능, 인스턴스가 1개이므로 불필요한 메모리 낭비 최소화
    •     단점 : 여러 프로세스가 동시에 참조하는 것은 불가능 
  •  추상 팩토리
  •  팩토리 메서드

 

2) 구조 패턴

  •  컴퍼지트
  •  데커레이터

3) 행위 패턴

  •  옵서버
  •  스테이트
  •  템플릿 메서드
  •  커맨드

 

 

참고 : https://gmlwjd9405.github.io/2018/07/06/design-pattern.html

728x90

'스터디 > 기타 (소공, 보안)' 카테고리의 다른 글

IntelliJ Cannot resolve symbol 원인 및 해결방법  (0) 2023.08.25
[보안] 공개키 기반구조(PKI) 구성요소  (0) 2021.05.28
[보안] 정보보안 3요소  (0) 2021.05.28
[보안] 대칭키 vs 공개키(비대칭키)  (0) 2021.05.28
'스터디/기타 (소공, 보안)' 카테고리의 다른 글
  • IntelliJ Cannot resolve symbol 원인 및 해결방법
  • [보안] 공개키 기반구조(PKI) 구성요소
  • [보안] 정보보안 3요소
  • [보안] 대칭키 vs 공개키(비대칭키)
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크
    Python
    CodingTest
    카카오코테
    쿠버네티스
    스프링
    kafka
    springboot
    Kotlin
    codility
    코딩테스트
    코딜리티
    코딩
    자료구조
    코테공부
    금융용어
    pythoncodingtest
    LeetCode
    db
    이분탐색
    C++
    자바
    MySQL
    코테
    Spring
    알고리즘
    프로그래머스
    java
    리트코드
    스프링부트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[소프트웨어공학] 디자인 패턴
상단으로

티스토리툴바