1. 싱글톤 패턴 (Singleton Pattern)
주로 사용되는 섹터:
- 로깅 시스템: 애플리케이션에서 로그를 기록할 때, 싱글톤을 사용하여 단일 인스턴스를 유지합니다.
- 설정 클래스: 애플리케이션 설정 정보를 저장하고 접근할 때 사용합니다.
- 데이터베이스 연결: 데이터베이스 연결을 단일 인스턴스로 유지하여 효율성을 높입니다.
2. 팩토리 패턴 (Factory Pattern)
주로 사용되는 섹터:
- UI 프레임워크: 다양한 UI 컴포넌트를 생성할 때 사용됩니다.
- 게임 개발: 다양한 종류의 게임 객체(예: 캐릭터, 무기 등)를 생성할 때 사용됩니다.
- 데이터 처리 시스템: 다양한 형식의 데이터를 처리할 때 적절한 객체를 생성합니다.
3. 추상 팩토리 패턴 (Abstract Factory Pattern)
주로 사용되는 섹터:
- 크로스 플랫폼 애플리케이션: 서로 다른 플랫폼에 맞는 UI 컴포넌트를 생성할 때 사용됩니다.
- 테마 설정 시스템: 다양한 테마를 적용할 때, 각 테마에 맞는 객체를 생성합니다.
- 가전 제품 제어 시스템: 다양한 가전 제품을 제어하는 인터페이스를 제공할 때 사용됩니다.
4. 빌더 패턴 (Builder Pattern)
주로 사용되는 섹터:
- 복잡한 객체 생성: 여러 단계로 구성된 복잡한 객체를 생성할 때 사용됩니다.
- 문서 생성기: 복잡한 문서를 단계별로 생성할 때 사용됩니다.
- 게임 캐릭터 생성: 다양한 속성을 가진 캐릭터를 생성할 때 사용됩니다.
5. 프로토타입 패턴 (Prototype Pattern)
주로 사용되는 섹터:
- 복잡한 객체 복제: 복잡한 객체를 쉽게 복제할 때 사용됩니다.
- 게임 개발: 다양한 캐릭터나 아이템을 복제할 때 사용됩니다.
- 문서 편집기: 복잡한 문서나 그래픽 객체를 복제할 때 사용됩니다.
6. 어댑터 패턴 (Adapter Pattern)
주로 사용되는 섹터:
- 레거시 시스템 통합: 기존 시스템과 새로운 시스템을 통합할 때 사용됩니다.
- 서드파티 라이브러리 통합: 서드파티 라이브러리를 기존 코드에 맞게 통합할 때 사용됩니다.
- 데이터 변환기: 서로 다른 데이터 형식을 변환할 때 사용됩니다.
7. 브리지 패턴 (Bridge Pattern)
주로 사용되는 섹터:
- GUI 라이브러리: 다양한 플랫폼에서 동작하는 UI 컴포넌트를 생성할 때 사용됩니다.
- 장치 드라이버: 서로 다른 장치를 제어할 때 사용됩니다.
- 그래픽 렌더링: 다양한 그래픽 API를 사용하는 애플리케이션에서 사용됩니다.
8. 컴포지트 패턴 (Composite Pattern)
주로 사용되는 섹터:
- 파일 시스템: 디렉토리와 파일을 계층 구조로 표현할 때 사용됩니다.
- 그래픽 편집기: 복잡한 그래픽 객체를 계층 구조로 표현할 때 사용됩니다.
- UI 구성 요소: UI 구성 요소를 계층 구조로 표현할 때 사용됩니다.
9. 데코레이터 패턴 (Decorator Pattern)
주로 사용되는 섹터:
- UI 프레임워크: 기본 컴포넌트에 추가 기능을 동적으로 부여할 때 사용됩니다.
- 입출력 스트림: 스트림에 다양한 기능을 추가할 때 사용됩니다.
- 게임 아이템: 기본 아이템에 추가 기능을 부여할 때 사용됩니다.
10. 퍼사드 패턴 (Facade Pattern)
주로 사용되는 섹터:
- 라이브러리 통합: 복잡한 라이브러리를 간단한 인터페이스로 감쌀 때 사용됩니다.
- 서브시스템 관리: 복잡한 서브시스템을 간단한 인터페이스로 감쌀 때 사용됩니다.
- 애플리케이션 초기화: 복잡한 초기화 과정을 간단하게 처리할 때 사용됩니다.
11. 플라이웨이트 패턴 (Flyweight Pattern)
주로 사용되는 섹터:
- 텍스트 편집기: 많은 수의 문자 객체를 효율적으로 관리할 때 사용됩니다.
- 게임 개발: 많은 수의 게임 객체를 효율적으로 관리할 때 사용됩니다.
- 그래픽 시스템: 많은 수의 그래픽 객체를 효율적으로 관리할 때 사용됩니다.
12. 프록시 패턴 (Proxy Pattern)
주로 사용되는 섹터:
- 원격 프록시: 원격 객체에 대한 접근을 제어할 때 사용됩니다.
- 가상 프록시: 리소스가 많이 드는 객체의 생성을 지연시킬 때 사용됩니다.
- 보호 프록시: 접근 권한을 제어할 때 사용됩니다.
13. 체인 오브 리스폰서빌리티 패턴 (Chain of Responsibility Pattern)
주로 사용되는 섹터:
- 이벤트 처리 시스템: 이벤트를 여러 핸들러에 전달할 때 사용됩니다.
- 로깅 시스템: 로그 메시지를 여러 로깅 핸들러에 전달할 때 사용됩니다.
- 유효성 검사 시스템: 입력 데이터를 여러 단계로 유효성 검사할 때 사용됩니다.
14. 커맨드 패턴 (Command Pattern)
주로 사용되는 섹터:
- UI 버튼: 버튼 클릭 시 수행할 작업을 캡슐화할 때 사용됩니다.
- 작업 큐: 작업을 큐에 저장하고 나중에 실행할 때 사용됩니다.
- 매크로 시스템: 여러 작업을 하나의 작업으로 묶어 실행할 때 사용됩니다.
15. 인터프리터 패턴 (Interpreter Pattern)
주로 사용되는 섹터:
- 컴파일러: 소스 코드를 해석하고 실행할 때 사용됩니다.
- 정규 표현식 처리기: 정규 표현식을 해석하고 처리할 때 사용됩니다.
- 커스텀 스크립팅 언어: 간단한 스크립팅 언어를 해석하고 실행할 때 사용됩니다.
16. 이터레이터 패턴 (Iterator Pattern)
주로 사용되는 섹터:
- 컬렉션 프레임워크: 컬렉션 객체를 순회할 때 사용됩니다.
- 데이터베이스 접근: 데이터베이스 결과 집합을 순회할 때 사용됩니다.
- 파일 시스템 탐색: 디렉토리 내의 파일을 순회할 때 사용됩니다.
17. 미디에이터 패턴 (Mediator Pattern)
주로 사용되는 섹터:
- UI 폼: 여러 UI 컴포넌트 간의 상호작용을 조정할 때 사용됩니다.
- 채팅 애플리케이션: 여러 사용자의 메시지 교환을 조정할 때 사용됩니다.
- 항공 교통 관리 시스템: 항공기 간의 상호작용을 조정할 때 사용됩니다.
18. 메멘토 패턴 (Memento Pattern)
주로 사용되는 섹터:
- 텍스트 편집기: 실행 취소 기능을 구현할 때 사용됩니다.
- 게임 개발: 게임 상태를 저장하고 복원할 때 사용됩니다.
- 객체 상태 관리: 객체의 상태를 저장하고 복원할 때 사용됩니다.
19. 옵저버 패턴 (Observer Pattern)
주로 사용되는 섹터:
- 이벤트 처리 시스템: 이벤트를 여러 리스너에게 알릴 때 사용됩니다.
- 데이터 바인딩: 데이터 변경을 UI에 반영할 때 사용됩니다.
- 실시간 데이터 스트리밍: 데이터 변경을 구독자에게 실시간으로 알릴 때 사용됩니다.
20. 상태 패턴 (State Pattern)
주로 사용되는 섹터:
- UI 컴포넌트: UI 컴포넌트의 상태 변화를 관리할 때 사용됩니다.
- 게임 개발: 게임 객체의 상태 변화를 관리할 때 사용됩니다.
- 문서 편집기: 문서의 상태 변화를 관리할 때 사용됩니다.
21. 전략 패턴 (Strategy Pattern)
주로 사용되는 섹터:
- 정렬 알고리즘: 다양한 정렬 알고리즘을 적용할 때 사용됩니다.
- 게임 AI: 게임 캐릭터의 행동을 동적으로 변경할 때 사용됩니다.
- 데이터 압축: 다양한 압축 알고리즘을 적용할 때 사용됩니다.
22. 템플릿 메서드 패턴 (Template Method Pattern)
주로 사용되는 섹터:
- 알고리즘 구현: 알고리즘의 기본 구조를 정의하고 하위 클래스에서 세부 구현을 제공할 때 사용됩니다.
- 게임 개발: 게임 루프의 기본 구조를 정의하고 세부 구현을 제공할 때 사용됩니다.
- 파일 처리: 파일 처리의 기본 구조를 정의하고 세부 구현을 제공할 때 사용됩니다.
23. 비지터 패턴 (Visitor Pattern)
주로 사용되는 섹터:
- 컴파일러: 구문 트리를 탐색하고 처리할 때 사용됩니다.
- 파일 시스템: 파일 시스템의 각 요소를 탐색하고 처리할 때 사용됩니다.
- 그래픽 시스템: 그래픽 객체를 탐색하고 처리할 때 사용됩니다.
'java' 카테고리의 다른 글
자바 백엔드에서 자주 사용되는 디자인 패턴 조합 (1) | 2024.07.23 |
---|---|
컴포넌트, 컴포지트, 컨텍스트, 컨테이너 (0) | 2024.07.23 |
추상 팩토리 패턴과 의존성 뒤집기 (0) | 2024.07.17 |
추상 팩토리 패턴 (0) | 2024.07.17 |
데코레이터 패턴과 팩토리 패턴 (0) | 2024.07.16 |