본문 바로가기

개발/신기술공부

디자인 패턴

반응형

디자인 패턴 

  1. 개요 
  2. 생성패턴
  3. 구조패턴
  4. 행동패턴
  5. 병행성패턴
  6. 같이보기 
  7. 주석
  8. 참고 

1. 개요
software design patten, design pattern 
디자인 패턴, 소프트웨어 디자인 패턴, 설계 패턴
- 객체 지향 설계의 자주 활용되는 구조모음
- 객체 설계에서 나타나는 다양한 패턴들을 정리한 것
- 소프트웨어 개발과정에서 발견된 설계 노하우를 정리한것
- 소프트웨어 설계상의 구조적인 문제를 해결하는데이 도움이 됨
- 소프트웨어 설계시 자주 나타나는 문제를 해결하기위해 활용하는 설계구조패턴

중요패턴
2. 생성패턴

한국어명
영어명
비고
추상 팩토리 패턴
Abstract factory
빌더 패턴
Builder
팩토리 메소드 패턴
Factory method
게으른 초기화
Lazy initialization
Multiton
객체 풀
Object pool
프로토타입 패턴
Prototype
Resource acquisition is initialization
싱글턴 패턴
Singleton
단 1개만 생성해서 공유

3. 구조패턴

한국어명
영어명
비고
어댑터 패턴
Adapter
브리지 패턴
Bridge
기능 계층과 구현 계층을 분리
컴포지트 패턴
Composite
데코레이터 패턴
Decorator
퍼사드 패턴
Façade
플라이웨이트 패턴
Flywight
프론트 컨트롤러 패턴
Front Controller
Module
프록시 패턴
Proxy

4. 행동패턴

한국어명
영어명
비고
블랙보드 패턴
Blackboard
역할사슬 패턴
Chain of responsibility
책임 떠넘기기
커맨드 패턴
Command
인터프리터 패턴
Interpreter
이터레이터 패턴
Iterator
미디에이터 패턴
Mediator
메멘토 패턴
Memento
널 객체
Null object
옵저버 패턴
Observer
서번트 패턴
Servant
Specification
스테이트 패턴
State
스트레티지 패턴
Strategy
알고리즘 교체 가능
템플릿 메소드 패턴
Template method
비지터 패턴
Visitor

5. 병행성패턴

한국어명
영어명
비고
액티브객체
Active Object
Balking
바인딩 프로퍼티
Binding properties
더블 체크 락킹
Double-checked locking
이벤트 기반 비동기 처리
Event-based asynchronous
Guarded suspension
Lock
메시징 디자인 패턴
Messaging design pattern(MDP)
모니터 객체
Monitor object
리액터
Reactor
읽기-쓰기 락
Read-write lock
스케줄러
Scheduler
스레드 풀
Thread pool
스레드 특정 스토리지
Thread-specific storage

6. 같이 보기
객체지향 설계
MVC
헤드 퍼스트 디자인 패턴
Java 언어로 배우는 디자인 패턴 입문
아키텍쳐 패턴
프레임워크
패턴
프레임워크, 라이브러리차이

1. 프레임워크
- 제어의 역전 구조
- 제어 흐름의 주도권을 가지고 있음
- 주요 제어 흐름(main)을 가지고 있음
- 애플리케이션의 흐름을 직접제어함
- 흔히 MVC 구조를 제공한
- 프레임워크가 가진 제어흐름에 필요한 코드를 끼워넣는 방식으로 개발
- 예: 웹 애플리케이션 프레임워크

2. 라이브러리
- 주요 제어 흐름(main)을 제공하지않음
- 호출되어 사용됨
- 주요 제어 흐름을 개발자가 구현해야 함
Java 언어로 배우는 디자인 패턴 입문
헤드 퍼스트 디자인 패턴

2.1 Abstract Factory 패턴
1. 개요
추상 팩토리 패턴은 많은 수의 연관된 서브 클래스를 특정 그룹으로 묶어 한번에 교체할 수 있도록 만든 디자인 패턴입니다. 예를 들어 특정 라이브러리를 배포하는데 OS별로 지원하는 기능이 상이하다면 추상 팩토리 패턴을 사용해 OS별 기능 변경을 통합적으로 변경 할 수 있습니다.
추상 팩토리 패턴
- 객체를 통해 제품을 생산
- 부품을 조립해서 제품을 만드는 구조
- Client의 인스턴스가 ConcreateFactory의 인스턴스에 객체 생성을 맡김
- 객체구성

1. 개요
Builder pattern
빌더 패턴
- 복잡한 인스턴스를 조립하여 만드는 구조
- 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴
- 객체구성

팩토리 메소드 패턴, 팩토리 메서드, 팩토리 패턴
- 하위클래스에서 인스턴스를 생성하도록 하는 구조
- 공장에서 제품을 만들어내듯, 00공장 인스턴스가 00을 만들어내는 구조
- 서브클래스에서 오브젝트 생성 방법과 클래스를 결정하도록 강제하는 구조
- 추상 단계에서는 생성하려는 객체의 클래스를 정확히 지정하지 않음
- ConcreteCreator 클래스에 오브젝트 생성을 맡김

2.4 Singleton Pattern
1. 개요
싱글턴 패턴, 싱글턴
1. 인스턴스를 1개만 만들 수 있는 패턴
2. 어떤 클래스의 인스턴스를 하나만 만들 수 있는 패턴
3. 인스턴스에 접근할 수 있는 전역 접촉점을 제공하는 패턴
4. 인스턴스 생성(new)을 외부에서 직접 할 수 없게 하고 내부에서만 하는 구조로 하여 인스턴스 개수를 1개로 통제함
5. 인스턴스가 여러개 있을 필요가 없을 경우에 적용
 예: DB커넥션, 배경음악플레이어
6. (옵션) 생성자를 private로 선언하면 상송 불가 

2.5 Adapter Pattern
1. 개요
어댑터 패턴, 래퍼 패턴, 래퍼
1. 형식을 맞추어 사용하도록 하는 구조
2. 기존 객체를 원하는 형식으로 바꾸어(adapt)사용하는 방식
3. 기존 객체의 인터페이스 호환성을 맞춰줌
4. 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴
5. 클래스의 어댑터(상속을 이용) + 인스턴스 어댑터(위임을 이용)
클래스어댑터(상속)
인스턴스어댑터(위임)

2.6 Bridge Pattern
1. 기능 계층과 구현 계층이 분리된 구조
2. 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴

2.7 Decorator Pattern
데코레이터 패턴
1. 장식과 내용물을 동일시
2. 상황에 따라 어떤 객체에 책임이 덧붙이는 패턴
3. 기능 확장이 필요할 때 상속의 대안
4. 예시 : Java.io에 있는 InputStream, Reader, OutputStream, Writer

2.8 Facade Pattern
파사드 패턴, 퍼사드 패턴
1. 단순한 창구 역할
2. 단순화된 인터페이스를 제공하는 디자인 패턴
3. 복잡한 아키텍처를 숨기고 간략한 인터페이스로 접근,사용하도록 추상화하는 디자인 패턴
4. 클래스 라이브러리 같은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체

2.9 Command
커맨드 패턴
1. 명령을 클래스로 표현하는 구조
2. 요청을 객체의 형태로 캡슐화하는 디자인 패턴
3. 서로 요청이 다른 사용자의 매개변수, 요청 저장, 로깅, 연산 취소를 지원합

2.9 Observer
상태 변화를 알려주도록 하는 패턴
1. 상태 변화를 알려주도록 하는 패턴 
2. 이벤트 핸들링 시스텐 구현에 활용됨
3. 어떤 일이 생기면 미리 등록한 객체들에게 통보해주는 패턴
4. 옵저버들을 등록해두어 상태변화가 있을 때 통지받는 패턴
5. 객체의 상태 변화를 관찰하는 관찰자들의  목록을 객체에 등록하여 상태 변화가 있을 때마다 메소드 등을 통해 객체가 각 Observer에게 통지하도록 하는 디자인 패턴
6. 발행-구독 모델을 따르는 디자인 패턴

2.9 Strategy
스트래티지 패턴, 전략 패턴, 정책 패턴
1. 알고리즘을 교체할 수 있는 구조 
2. 동적으로 알고리즘을 교체할 수 있는 디자인 패턴
3. 알고리즘을 사용하는 곳과, 알고리즘을 제공하는 곳을 분리시킨 구조 
4. 알고리즘 인터페이스를 정으하고 각 알고리즘들을 클래스별로 캡슐화하여 교체 가능하게 함
5. 변경이 필요한 알고리즘을 인터페이스를 통해 외부로 분리, 구체적 알고리즘 클래스를 필요에 따라 바꿔  사용할 수 있게 함
6. 개발 폐쇄 원칙 실현에 가장 잘 맞는 패턴

2.9 Template method
템플릿 메소드 패턴
1. 상송을 통해 기능을 확장하는 패턴
2. 구체적인 것은 하위클래스에서 처리하도록 하는 구조
3. 상속을 통해 슈퍼클래스으 기능을 확장학 때 사용하는 대표적인 방법
4. 어떤 알고리즘에 대한 큰 틀이 결정된 상태에서 구체적인 설계를 서브클래스에 맡기는 디자인 패턴
5. 상위클래스(템플릿)에 기본적인 로직의 흐름구성, 그 일부를 추상메소드/protected메소드로 기술하여, 서브클래스에서 구현, 오버라이딩하도록 하는 패턴
6. 스크링 프레임워크 등 프레임워크에서 자주 사용되는 구조 



반응형
LIST