편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
==개요== | ==개요== | ||
;software 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 ([[어댑터 패턴]]) | |||
* ★ Bridge ([[브리지 패턴]]) : 기능 계층과 구현 계층을 분리 | |||
* ★★ 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 | ||
|} | |} | ||
==같이 보기== | ==같이 보기== | ||
* [[객체지향 설계]] | |||
* [[ | |||
* [[MVC]] | * [[MVC]] | ||
* [[헤드 퍼스트 디자인 패턴]] | * [[헤드 퍼스트 디자인 패턴]] | ||
* [[Java 언어로 배우는 디자인 패턴 입문]] | * [[Java 언어로 배우는 디자인 패턴 입문]] | ||
* [[아키텍처 패턴]] | |||
* [[프레임워크]] | |||
* [[패턴]] | |||
==주석== | |||
<references/> | |||
==참고== | ==참고 자료== | ||
* http://en.wikipedia.org/wiki/Software_design_pattern | * http://en.wikipedia.org/wiki/Software_design_pattern | ||
[[분류: 디자인 패턴]] | [[분류: 디자인 패턴]] |