디자인 패턴 편집하기

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
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
| 하나의 인스턴스만 생성해서 공유사용
|}
|}


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


==행위 패턴==
==행동 패턴==
{| class='wikitable'
{| class='wikitable''
! 한국어명 !! 영어명 !! 비고
|-
|-
| [[블랙보드 패턴]]
| [[블랙보드 패턴]]
104번째 줄: 57번째 줄:
|
|
|-
|-
| [[역할 사슬 패턴]] ★★
| [[역할 사슬 패턴]]
| Chain of responsibility)
| Chain of responsibility)
| 책임을 떠넘기는 구조
| 책임 떠넘기기
|-
|-
| [[커맨드 패턴]] ★★★
| [[커맨드 패턴]] ★★
| Command
| Command
| 명령을 클래스로 표현하는 구조
|
|-
|-
| [[인터프리터 패턴]] ★
| [[인터프리터 패턴]] ★
| Interpreter
| Interpreter
|  
|
|-
|-
| [[이터레이터 패턴]] ★★★
| [[이터레이터 패턴]] ★★
| Iterator
| Iterator
| 어떤 목록을 차례로 처리하는 구조
|
|-
|-
| [[미디에이터 패턴]] ★★
| [[미디에이터 패턴]]
| Mediator
| Mediator
| 중개자를 통해 처리하는 구조
|
|-
|-
| [[메멘토 패턴]] ★
| [[메멘토 패턴]] ★
132번째 줄: 85번째 줄:
|
|
|-
|-
| [[옵저버 패턴]] ★★★
| [[옵저버 패턴]] ★★
| Observer
| Observer
| 상태 변화를 통보 받는 구조 (이벤트 핸들러 구조)
|
|-
|-
| [[서번트 패턴]]
| [[서번트 패턴]]
144번째 줄: 97번째 줄:
|
|
|-
|-
| [[스테이트 패턴]] ★★
| [[스테이트 패턴]]
| 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


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

제타위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 제타위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 편집 도움말 (새 창에서 열림)

이 문서에서 사용한 틀: