클래스 디자인 패턴 편집하기


편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.

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

최신판 당신의 편집
1번째 줄: 1번째 줄:
클래스 디자인 패턴은 프로그램 안의 클래스들의 구조를 패턴화하여 나타낸 것이다. 패턴의 구현은 [[프로그래밍 언어]]의 특성에 따라 달라질 수 있다.
클래스 디자인 패턴은 프로그램 안의 클래스들의 구조를 패턴화하여 나타낸 것이다.


== 종류 ==
== 종류 ==
패턴의 분류와 명칭은 <GOF 디자인 패턴>을 따른다. 또한, 패턴은 보통 [[UML]]으로 표현하기 때문에 UML을 알고 있다는 전제하에 설명한다.
패턴의 분류와 명칭은 <GOF 디자인 패턴>을 따른다.


=== 생성 패턴 ===
=== 생성 패턴 ===


* Abstract Factory
=== 구조 패턴 ===


[[파일:Design Pattern Factory.png]]
=== 행위 패턴 ===


: 이 패턴과 Factory Method 패턴의 기본이 되는 Factory 패턴은 객체를 생성하는 과정을 숨기고 인스턴스만 반환한다.
{{작성중임}}
 
[[파일:Design Pattern Abstract Factory.png]]
 
: Abstract Factory는 Factory를 추상화하여 객체의 생성과정을 클라이언트가 선택할 수 있게 한 것으로, Factory 패턴이 후술할 Strategy 패턴과 결합한 것이라고 볼 수 있다.
* Builder
* Factory Method
 
[[파일:Design Pattern Factory Method.png]]
 
: 객체의 생성을 하나의 메소드에 전가하는 패턴으로, 생성과 사용을 분리한다. 팩토리 클래스를 상속한 클래스로 생성작업을 구현한다.
* Prototype
* Singleton
[[파일:Design Pattern Singleton.png]]
: 가장 간단한 패턴이다. 프로그램 사이클동안 하나의 인스턴트 생성민 허락할 때 사용한다. 보통 정적 Singleton, 게으른 인스턴스화가 적용된 Singleton, 동기화가 적용된 Singleton 정도를 구현하게 되지만, C++의 경우 객체의 소멸 부분의 문제 때문에 위의 것과 더불어 죽었다 살아나는<del>[[주작]]</del> 피닉스 Singleton 등 다양한 구현이 존재한다.
 
=== 구조패턴 ===
* Adapter
* Bridge
* Composite
* Decorator
* Facade
* Flyweight
* Proxy
 
=== 행위패턴 ===
* Chain of Responsibility
* Command
* Interpreter
* Iterator
* Mediator
* Memento
* Observer
* Strategy
* State
* Template Method
* Visitor


{{주석}}
{{주석}}


[[분류:디자인 패턴]]
[[분류:컴퓨터 프로그래밍/디자인 패턴]]
리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다.
취소 편집 도움말 (새 창에서 열림)

| () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |}

이 문서에서 사용한 틀: