"디자인 패턴"의 두 판 사이의 차이

 
(사용자 2명의 중간 판 28개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{다른뜻|디자인 패턴(design pattern)|디자인 패턴}}
{{다른뜻|디자인 패턴 (1994)}}
==개요==
==개요==
;software design pattern; design pattern
;software design pattern, design pattern
;디자인 패턴, 소프트웨어 디자인 패턴, 설계 패턴
;소프트웨어 디자인 패턴, 디자인 패턴, 설계 패턴
* 객체지향 설계에 자주 활용되는 구조 모음
* 객체지향 설계에 자주 활용되는 구조 모음
* 객체지향 설계에서 나타나는 다양한 패턴들을 정리한 것<ref>객체지향 분석/설계시에 도움이 된다.</ref>
* 객체지향 설계에서 나타나는 다양한 패턴들을 정리한 것<ref>객체지향 분석/설계시에 도움이 된다.</ref>
* 소프트웨어 개발과정에서 발견된 설계 노하우를 정리한 것
* 소프트웨어 개발과정에서 발견된 설계 노하우를 정리한 것
* 소프트웨어 설계상의 구조적인 문제를 해결하는 데에 도움이 됨
* 특정 문맥에서 공통적으로 발생하는 문제에 대한 재사용가능한 해결책
* 소프트웨어 설계시 자주 나타나는 문제를 해결하기 위해 활용하는 설계구조 패턴
* 소프트웨어 설계시 자주 나타나는 문제를 해결하기 위해 활용하는 설계구조 패턴
* 설계시 자주 반복되는 문제에 대한 해결책을 담고 있다.
* 디자인 패턴 이름을 통해 보다 명확하게 소통할 수 있다.
* 소프트웨어 설계상의 구조적인 문제를 해결하는 데에 도움이 된다.
* 디자인 패턴을 적용하면 오히려 설계가 복잡해지거나 수행속도가 저하될 수도 있다.


==생성 패턴==
==[[생성 패턴]]==
{| class='wikitable'
{| class='wikitable'
! 한국어명 !! 영어명 !! 비고
|-
|-
| [[추상 팩토리 패턴]] ★★
| [[추상 팩토리 패턴|추상 팩토리]] ★★★
| Abstract factory
| Abstract factory
| 부품을 조립해서 제품 생성
|-
|-
| [[빌더 패턴]]
| [[빌더 패턴|빌더]] ★★
| Builder
| Builder
| 조립해서 제품 생성
|-
|-
| [[팩토리 메소드 패턴]] ★★
| [[팩토리 메소드 패턴|팩토리 메소드]] ★★★
| Factory method
| Factory method
| 하위클래스에서 인스턴스 생성
|-
|-
| [[게으른 초기화]] ★
| Lazy initialization
|
|
| Lazy initialization
|-
|-
| [[멀티턴 패턴|멀티턴]]
| Multiton
|
|
| Multiton
|-
|-
| [[객체 풀]]
| [[객체 풀]]
| Object pool
| Object pool
|
|-
|-
| [[프로토타입 패턴]]
| [[프로토타입 패턴]] ★★
| Prototype
| Prototype
| 인스턴스를 복제해서 사용
|-
|-
|
|
| Resource acquisition is initialization
| Resource acquisition is initialization
|
|-
|-
| [[싱글턴 패턴]] ★★
| [[싱글턴 패턴]] ★★★★
| Singleton
| Singleton
| 하나의 인스턴스만 생성해서 공유사용
|}
|}


==구조 패턴==
==구조 패턴==
* ★★ Adapter ([[어댑터 패턴]])
{| class='wikitable'
* ★ Bridge ([[브리지 패턴]]) : 기능 계층과 구현 계층을 분리
! 한국어명 !! 영어명 !! 비고
* ★★ Composite ([[컴포지트 패턴]])
|-
* ★★ Decorator ([[데코레이터 패턴]])
| [[어댑터 패턴|어댑터]] ★★★
* ★★ Facade ([[퍼사드 패턴]])
| Adapter
* ★ Flyweight ([[플라이웨이트 패턴]])
| 기존 객체를 원하는 형식으로 맞추어 사용
* Front Controller
|-
* Module
| [[브리지 패턴|브리지]] ★★
* ★★ Proxy ([[프록시 패턴]])
| Bridge
| 기능 계층과 구현 계층을 분리
|-
| [[컴포지트 패턴|컴포지트]] ★★★
| Composite
| 그릇과 내용물을 동일시
|-
| [[데코레이터 패턴|데코레이터]] ★★★
| Decorator
| 장식과 내용물을 동일시
|-
| [[퍼사드 패턴|퍼사드]] ★★★
| Facade
| 단순한 창구 역할
|-
| [[플라이웨이트 패턴]] ★★
| Flyweight
| 동일한 것을 공유하여 사용
|-
| [[프론트 컨트롤러 패턴]]
| Front Controller
|
|-
| [[모듈 패턴]]
| Module
|
|-
| [[프록시 패턴]] ★★★
| Proxy
| 필요해지면 만드는 구조
|}


==행동 패턴==
==행위 패턴==
{| class='wikitable'
{| class='wikitable'
! 한국어명 !! 영어명 !! 비고
|-
|-
| [[블랙보드 패턴]]
| [[블랙보드 패턴]]
57번째 줄: 104번째 줄:
|
|
|-
|-
| [[역할 사슬 패턴]]
| [[역할 사슬 패턴]] ★★
| Chain of responsibility)
| Chain of responsibility)
| 책임 떠넘기기
| 책임을 떠넘기는 구조
|-
|-
| [[커맨드 패턴]] ★★
| [[커맨드 패턴]] ★★★
| Command
| Command
|
| 명령을 클래스로 표현하는 구조
|-
|-
| [[인터프리터 패턴]] ★
| [[인터프리터 패턴]] ★
| Interpreter
| Interpreter
|
|  
|-
|-
| [[이터레이터 패턴]] ★★
| [[이터레이터 패턴]] ★★★
| Iterator
| Iterator
|
| 어떤 목록을 차례로 처리하는 구조
|-
|-
| [[미디에이터 패턴]]
| [[미디에이터 패턴]] ★★
| Mediator
| Mediator
|
| 중개자를 통해 처리하는 구조
|-
|-
| [[메멘토 패턴]] ★
| [[메멘토 패턴]] ★
85번째 줄: 132번째 줄:
|
|
|-
|-
| [[옵저버 패턴]] ★★
| [[옵저버 패턴]] ★★★
| Observer
| Observer
|
| 상태 변화를 통보 받는 구조 (이벤트 핸들러 구조)
|-
|-
| [[서번트 패턴]]
| [[서번트 패턴]]
97번째 줄: 144번째 줄:
|
|
|-
|-
| [[스테이트 패턴]]
| [[스테이트 패턴]] ★★
| ★★ State
| State
|
|
|-
|-
| [[스트래티지 패턴]] ★★
| [[스트래티지 패턴]] ★★★
| Strategy
| Strategy
| 알고리즘 교체 가능
| 알고리즘을 교체할 수 있는 구조
|-
|-
| [[템플릿 메소드 패턴]] ★★
| [[템플릿 메소드 패턴]] ★★★
| Template method
| Template method
|
| 상부에서는 기본 로직 구성, 구체적인 것은 하위로 위임
|-
|-
| [[비지터 패턴]]
| [[비지터 패턴]] ★★
| Visitor
| Visitor
|
| 데이터 구조를 방문하며 처리
|}
|}


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


==같이 보기==
==같이 보기==
{{z컬럼3|
* [[패턴]]
* [[MVC]]
* [[리팩토링]]
* [[코딩 패턴]]
* [[프레임워크]]
* [[아키텍처 패턴]]
* [[객체지향 설계]]
* [[객체지향 설계]]
* [[MVC]]
* [[헤드 퍼스트 디자인 패턴]]
* [[헤드 퍼스트 디자인 패턴]]
* [[Java 언어로 배우는 디자인 패턴 입문]]
* [[Java 언어로 배우는 디자인 패턴 입문]]
* [[아키텍처 패턴]]
}}
* [[프레임워크]]
* [[패턴]]
 
==주석==
<references/>


==참고 자료==
==참고==
* http://en.wikipedia.org/wiki/Software_design_pattern
* http://en.wikipedia.org/wiki/Software_design_pattern


[[분류: 디자인 패턴]]
[[분류: 디자인 패턴]]

2022년 12월 5일 (월) 20:48 기준 최신판

  다른 뜻에 대해서는 디자인 패턴(design pattern) 문서를 참조하십시오.
  다른 뜻에 대해서는 디자인 패턴 (1994) 문서를 참조하십시오.

1 개요[ | ]

software design pattern, design pattern
소프트웨어 디자인 패턴, 디자인 패턴, 설계 패턴
  • 객체지향 설계에 자주 활용되는 구조 모음
  • 객체지향 설계에서 나타나는 다양한 패턴들을 정리한 것[1]
  • 소프트웨어 개발과정에서 발견된 설계 노하우를 정리한 것
  • 특정 문맥에서 공통적으로 발생하는 문제에 대한 재사용가능한 해결책
  • 소프트웨어 설계시 자주 나타나는 문제를 해결하기 위해 활용하는 설계구조 패턴
  • 설계시 자주 반복되는 문제에 대한 해결책을 담고 있다.
  • 디자인 패턴 이름을 통해 보다 명확하게 소통할 수 있다.
  • 소프트웨어 설계상의 구조적인 문제를 해결하는 데에 도움이 된다.
  • 디자인 패턴을 적용하면 오히려 설계가 복잡해지거나 수행속도가 저하될 수도 있다.

2 생성 패턴[ | ]

한국어명 영어명 비고
추상 팩토리 ★★★ Abstract factory 부품을 조립해서 제품 생성
빌더 ★★ Builder 조립해서 제품 생성
팩토리 메소드 ★★★ Factory method 하위클래스에서 인스턴스 생성
게으른 초기화 Lazy initialization
멀티턴 Multiton
객체 풀 Object pool
프로토타입 패턴 ★★ Prototype 인스턴스를 복제해서 사용
Resource acquisition is initialization
싱글턴 패턴 ★★★★ Singleton 하나의 인스턴스만 생성해서 공유사용

3 구조 패턴[ | ]

한국어명 영어명 비고
어댑터 ★★★ Adapter 기존 객체를 원하는 형식으로 맞추어 사용
브리지 ★★ Bridge 기능 계층과 구현 계층을 분리
컴포지트 ★★★ Composite 그릇과 내용물을 동일시
데코레이터 ★★★ Decorator 장식과 내용물을 동일시
퍼사드 ★★★ Facade 단순한 창구 역할
플라이웨이트 패턴 ★★ Flyweight 동일한 것을 공유하여 사용
프론트 컨트롤러 패턴 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 같이 보기[ | ]

7 참고[ | ]

  1. 객체지향 분석/설계시에 도움이 된다.
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}