Please enable JavaScript.
Coggle requires JavaScript to display documents.
SW 설계-디자인패턴 - Coggle Diagram
SW 설계-디자인패턴
GoF 디자인패턴
생성패턴: Factory Method(클래스), Abstract Factory, Builder, Prototype, Singleton
구조패턴: Adapter(Class), Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
행위패턴: Interpreter, Template Method(클래스), Command, Iterator, Mediator, Memento, Observer, State, Strategy, Visitor, Chain of Responsibility
클래스 패턴: 클래스 사이 관계 상속 통해 정의, 컴파일 시 결정
객체 패턴: 객체 사이 관계, 보통 구성 통해 정의, 동적 생성, 유연
Factory Method
구체적인 처리를 서브 클래스로 미룸
Factory(객체 생성 역할), Method(생성 후 작업 목록)
생성 인터페이스 미리 정의, 인스턴스 생성을 서브 클래스에 맡김
생성할 객체 타입을 예측할 수 없을 때, 뉴욕/한국/중국피자가게
Abstract Factory
관련 구성품을 조립해서 제품을 작성
객체군 여러벌, 각각의 구체 Factory 클래스 통한 객체군 생성
Factory Method 생성 후 할 일의 공통점 정의 초점, Abstract Factory 생성해야 할 객체군의 공통점 초점
뉴욕/한국/중국피자가게->치즈/야채/고기피자
Builder
복잡한 인스턴스를 조립, 자동차 부품들 모아 자동차 만듦
세트 메뉴(에피타이저-메인-디저트) 각 순서 당 음식 선택
동일한 생성 절차에서 서로 다른 표현 결과 만듦
Bridge
객체에서 추상 부분과 구현 부분을 분리
변화되는 부분을 따로 분리해서 관리(OCP)
사람-작업하기/먹기/놀기(게임, 책, TV)
Decorator
장식용 틀과 내용물 동기화, 아메리카노/주스-크림/두유/우유
주어진 상황 및 용도에 따라 책임 덧붙, 서브클래싱 대신
동적으로 투명하게 객체에 서비스 추가
Command
명령을 클래스로 부여
요청을 객체 형태로 캡슐화, 요청과 처리를 분리
고객이 웨이터에 주문-주문서-카운터-주방장
Mediator(상호연결창구를 단일화)
m:n -> m:1 관계 복잡도 감소, 유지보수/재사용 확장성 유리
상호작용 복잡, 의존관계 구조화 않되어 이해 어려울 때
informs 통해 Mediator 알림, updates 통해 Colleague 발신
Strategy(알고리즘을 바꾸어 넣음)
공통 알고리즘군 정의, 각 알고리즘 캡슐화, 상호 교환 가능
동물-울기-호랑이처럼울기/고양이처럼울기
전략 패턴은 클라이언트가 상태 설정, 상태 패턴은 내부에서 자체 설정
Visitor(구조속을 떠돌며 일 수행)
클래스 변경없이 새로운 행위 정의, 객체와 행위를 m:n으로 분리
알고리즘(행위)을 객체 구조에서 분리시키는 패턴, 도우미-할일
Visitor 해야 할 일이 정의된 Element 받아 해당 행위 수행
개요
특징: 재사용, 구조 파악, 의사소통, 설계변경, 객체지향설계원리
정의: 자주 사용 설계형태 정형화, 유형별 설계 템플릿
Prototype
복사해서 인스턴스를 작성, 다수 객체 생성시 비용 절감, clone()
객체 생성 클래스 불필요, 실행 중 새로운 제품 추가/삭제
Singleton
단 하나의 인스턴스, 어디서든지 그 인스턴스에 접근 가능
static 메소드, 언제나 동일한 인스턴스 반환
Adapter
한 겹을 더하여 재사용, 인터페이스 호환성 문제 해결
한 클래스의 인터페이스를 클라이언트가 원하는 형태로 변환
Composite
용기와 내용물을 동일화, 트리구조로 부분-전체 계층 표현
예) 노드-파일/폴더
Facade(간단한 창구)
다양한 서브시스템 객체들에 일관된 하나의 인터페이스 제공
클라이언트와 구현 클래스 간 종속성 존재시 결합도 줄이는 방법
Flyweight
같은 것을 공유해서 불필요한 부분 제거, 공유 통해 자원 효과
대량 객체, 저장 고가, 대부분 객체 상태 부가적인 것
Proxy
대리자를 전면에 사용, 다른 객체에 접근하기 위한 중개자 역할
프록시 역할은 실제 객체 보호나 접근 관리(보안, 접근통제 등)
Interpreter(문법규칙을 클래스로 표현)
언어 문법 표현 수단 정의, 문장 해석 정의
문법 구조 트리, 논-터미널 노드, 터미널 노드
Template Method
상위 클래스에서 처리 흐름 제어, 하위 클래스에서 처리구체화
코드 중복 줄이고 리팩토링에 유용
Memento(상태 보존)
객체 상태 저장해 둔 상태로 다시 복구할 수 있게 하는 패턴
UNDO 상태 저장소, UNDO 상태, 워드
Observer(상태 변화 통지)
일 대 다 의존 관계 정의, 의존객체에 변화 통지 및 자동 갱신
One Source Multiple Use, Publish & Subscribe 패턴
State(상태를 클래스로, OCP)
객체 내부 상태에 객체 행동 바꿈, 객체 클래스 바뀌는 효과
객체 상태 추가에 따른 행위 수행 변경 문제에 적용
Chain of Responsibility(책임)
요구 처리 객체 미정, 다수 객체 사슬처럼 연결, 합목적 객체 결정 방법
요청 수행 보장 없음, 처리 시간 예측 어려움
Iterator(하나씩 열거)
내부 표현 노출않고 객체 집합 원소 순차적 접근 방법 제공