각 디자인 패턴의 「사용지」를 한마디로 정리해 보았다
소개
각 디자인 패턴이 「어떤 경우에 유용한 것인가」의 일람이 있으면 편리할까라고 생각 정리해 보았습니다. GoF의 23 패턴 외에 「Game Programming Patterns」의 패턴도 게재하고 있습니다.
생성에 관한 패턴
패턴 이름
사용 장소
Abstract Factory
X라면 A, B, C가, Y라면 D, E, F를 원한다.
빌더
객체 생성 단계가 복잡할 때
Factory Method
어떤 구상 클래스를 사용할지 숨기고 싶을 때
Prototype
Clone()
하고 싶을 때Singleton
인스턴스가 두 개 이상 있고 싶지 않을 때
구조에 관한 패턴
패턴 이름
사용 장소
어댑터
엉망이되는 표면을 깨끗하게하고 싶을 때
다리
상속 지옥을 좋은 느낌으로 나누고 싶을 때
Composite
폴더에 파일과 폴더를 모두 넣고 싶을 때
Decorator
인스턴스에 동적으로 기능을 추가하고 싶을 때
Facade
액세스하는 클래스를 하나로 정리하고 싶을 때
Flyweight
여러 종류의 개체가 대량으로 있을 때
프록시
객체를 임시로 놓고 싶을 때
행동에 관한 패턴
패턴 이름
사용 장소
Chain of Responsibility
자신이 담당이라면 처리하지만 다르면 후속으로 흘리는, 같은 때
Command
이벤트에 대한 액션을 바꾸고 싶을 때
Interpreter
구문 트리를 만들 때
Iterator
ForEach하고 싶을 때
Mediator
MVC의 C가 다양하게 취하는 느낌을 하고 싶을 때
Memento
Undo/Redo하고 싶을 때
Observer
이벤트 발화에 대한 액션 실행을 발화측으로부터 분리하고 싶을 때
State
상태별로 처리를 완전히 전환하고 싶을 때
Strategy
알고리즘적인 처리를 바꾸고 싶을 때
Template Method
일련의 처리의 흐름이 정해져 구체적으로는 여러가지 패턴이 있을 때
방문자
더블 디스패치하고 싶을 때
GPP/시퀀스 패턴
패턴 이름
사용 장소
Double Buffer
Screen Tearing 를 피하고 싶을 때
Game Loop
게임엔진을 만들고 싶을 때
Update Method
매 프레임 업데이트하고 싶을 때
GPP/비헤이비어 패턴
패턴 이름
사용 장소
Bytecode
올레올리스 스크립팅 언어를 만들고 싶을 때
Subclass Sandbox
공통 처리는 많지만 처리 순서는 각 서브 클래스가 결정하고 싶을 때
Type Object
JSON 등을 바탕으로 한 클래스에서 여러 종족을 생성하고 싶을 때
GPP/분리 패턴
패턴 이름
사용 장소
Component
미세한 단위로 유연하게 기능을 추가하고 싶을 때
이벤트 큐
이벤트에 대한 액션 실행 타이밍을 중앙 관리하고 싶을 때
서비스 로케이터
유연한 Singleton을 원할 때
GPP/최적화 패턴
패턴 이름
사용 장소
Data Locality
고속으로 배열을 돌리고 싶을 때
Dirty Flag
언제 계산하면 무거워질 때
Object Pool
무거운 생성 객체가 여러 번 필요할 때
Spatial Partition
효율적으로 충돌 판정을 하고 싶을 때
P.S.
모두 「한마디로」 정리하려고 노력했는데, 일본어는 어렵네요. 섬세한 것도 괜찮습니다.
Reference
이 문제에 관하여(각 디자인 패턴의 「사용지」를 한마디로 정리해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cooloon/items/62f182f77f70135e31bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)