본문 바로가기
CS

디자인 패턴

by Forsaken Developer 2023. 3. 31.
728x90
728x90

디자인 패턴

소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴

디자인 패턴의 구성 요소

  • 패턴의 이름
  • 문제 및 배경
  • 솔루션
  • 사례
  • 결과
  • 샘플 코드

디자인 패턴의 유형

목적에 따른 구분

  • 생성 : 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡술화를 수행하는 패턴
  • 구조 : 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
  • 행위 : 클래스나 객체들이 상호 작용하는 방법과 역할 분담을 다루는 패턴

범위에 따른 구분

  • 클래스 : 클래스 간 상속 관계를 다루는 패턴, 컴파일 타임에 정적으로 결정
  • 객체 : 객체 간 관련성을 다루는 패턴, 런타임에 동적으로 결정

디자인 패턴의 종류

생성 패턴

Builder

복합 객체를 생성할 때 객체를 생성하는 방법과 객체를 구현 하는 방법을 분리함으로써 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있는 디자인 패턴

Prototype

처음부터 일반적인 원형을 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정하여 사용하는 패턴

Factory Method

상위 클래스에서 객체를 생성하는 인터페이스를 정의하고 하위 클래스에서 인스턴스를 생성하도록 하는 방식

Abstract Factory

구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴

Singleton

전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴

구조 패턴

Bridge

기능의 클래스 계층과 구현의 클래스 계층을 연결하고 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 디자인 패턴

Decorator

기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴으로 기능을 동적으로 유연하게 확장할 수 있게 해주어 상속의 대안으로 사용하는 디자인 패턴

Facade

복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 또는 여타 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게 하는 패턴

Flyweight

다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스 화하여 공유함으로써 메모리를 절약하고 클래스의 경량화를 목적으로 하는 디자인 패턴

Proxy

실제 객체에 대한 대리 객체로 실체 객체에 대한 접근 이전에 필요한 행동을 취하는 디자인 패턴

Composite

객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴

Adapter

기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴

행위 패턴

Mediator

객체 지향의 느슨한 결합을 위해서 중간에 중재자를 두고 중재자에게 모든 것을 요구하여 객체 지향의 목표를 달성하게 해주는 디자인 패턴

Interpreter

구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 해석할 수 있게 만드는 디자인 패턴

Iterator

컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인 패턴

Template Method

어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴

Observer

한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 디자인 패턴

State

객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조하게 하는 디자인 패턴

Visitor

각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행 하도록 만드는 패턴

Command

실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴

Strategy

알고리즘 군을 정의하고 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 다음 필요할 때 서로 교환해서 사용할 수 있게 하는 패턴

Memento

클래스 설계  관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인 패턴

Chain of Responsibility

명령 객체와 일련의 처리 객체를 포함하여 각각의 처리 객체가 명령 객체를 처리할 수 없을 때 다음 처리 객체로 넘기는 디자인 패턴

728x90
반응형

'CS' 카테고리의 다른 글

스토리보드와 프로토타입  (0) 2023.04.02
UI 요구사항 확인  (0) 2023.04.02
소프트웨어 아키텍처  (0) 2023.03.30
비용산정, 일정관리 모형  (0) 2023.03.29
객체 지향 분석 방법론  (0) 2023.03.29

댓글