
GO 패턴
GO 언어를위한 관용 설계 및 응용 프로그램 패턴의 선별 된 모음.
tmrts/go-patterns의 포크이지만 다른 멋진 포크와 병합되었습니다. 예시적인 패턴과 함께 갈 수 있습니다
병합 된 저장소
- 병합 : https://github.com/nynicg/go-patterns
- 병합 : https://github.com/weichou1229/go-patterns
- 병합 : https://github.com/jianhan/go-patterns
- 병합 : https://github.com/sakari-ai/go-patterns
- 병합 : https : //github.com/restudy/go-patterns
창조적 패턴
| 무늬 | 설명 | 상태 |
|---|
| 초록 공장 | 상장 된 물체의 패밀리를 만드는 인터페이스를 제공합니다 | ✔ |
| 빌더 | 간단한 물체를 사용하여 복잡한 객체를 구축합니다 | ✔ |
| 공장 방법 | 인스턴스 생성을위한 특수 함수에 대한 개체의 인스턴스화를 방어합니다. | ✔ |
| 객체 풀 | 동일한 유형의 객체 그룹 인스턴스를 인스턴스화하고 유지합니다. | ✔ |
| 하나씩 일어나는 것 | 유형의 인스턴스화를 하나의 객체로 제한합니다 | ✔ |
구조적 패턴
| 무늬 | 설명 | 상태 |
|---|
| 다리 | 두 가지가 독립적으로 다를 수 있도록 구현에서 인터페이스를 분리합니다. | ✔ |
| 합성물 | 여러 다른 객체에 대한 캡슐화 및 액세스를 제공합니다. | ✔ |
| 데코레이터 | 정적 또는 동적으로 객체에 동작을 추가합니다 | ✔ |
| 정면 | 하나의 유형을 다른 유형으로 API로 사용합니다. | ✔ |
| 플라이급 | 리소스 사용을 최소화하기 위해 유사/동일한 상태를 가진 기존 객체 인스턴스를 재사용합니다. | ✔ |
| 대리 | 대상이 행동을 제어 할 수있는 대리를 제공합니다. | ✔ |
| 어댑터 | 대상이 행동을 제어 할 수있는 대리를 제공합니다. | ✔ |
행동 패턴
| 무늬 | 설명 | 상태 |
|---|
| 책임의 사슬 | 요청을 처리 할 수있는 기회를 제공하여 수신기에 보낸 사람을 커플 링하지 않습니다. | ✔ |
| 명령 | 나중에 전화 할 명령과 주장을 묶습니다 | ✔ |
| 중재인 | 객체를 연결하고 프록시 역할을합니다 | ✔ |
| 기념물 | 이전 상태로 돌아가는 데 사용할 수있는 불투명 토큰을 생성하십시오. | ✔ |
| 관찰자 | 이벤트/데이터 변경 알림을위한 콜백을 제공합니다 | ✔ |
| 기재 | 주어진 클래스의 모든 서브 클래스를 추적하십시오 | ✔ |
| 상태 | 내부 상태를 기반으로 동일한 객체의 다양한 동작을 캡슐화합니다. | ✔ |
| 전략 | 런타임에 알고리즘의 동작을 선택할 수 있습니다 | ✔ |
| 주형 | 일부 메소드를 서브 클래스로 정의하는 골격 클래스를 정의합니다. | ✔ |
| 방문객 | 알고리즘을 작동하는 객체에서 분리합니다. | ✔ |
| 통역사 | 자신의 언어 또는 구성된 명령을 해석하십시오 | ✔ |
동기화 패턴
| 무늬 | 설명 | 상태 |
|---|
| 조건 변수 | 스레드가 일부 조건을 기다리기 위해 일시적으로 액세스를 포기할 수있는 메커니즘을 제공합니다. | ✘ |
| 잠금/뮤 테스 | 독점 액세스를 얻기 위해 리소스의 상호 배제 제한을 시행합니다. | ✘ |
| 감시 장치 | 뮤텍스와 조건 가변 패턴의 조합 | ✘ |
| 읽기 WRITE 잠금 | 병렬 읽기 액세스 허용이지만 리소스에 대한 쓰기 작업에서만 독점 액세스 권한 만 허용합니다. | ✔ |
| 신호기 | 공통 리소스에 대한 액세스를 제어 할 수 있습니다 | ✔ |
동시성 패턴
| 무늬 | 설명 | 상태 |
|---|
| N-Barrier | 모든 N 프로세스가 장벽에 도달 할 때까지 프로세스가 진행되는 것을 방지합니다. | ✔ |
| 경계 평행 | 리소스 제한으로 많은 독립 작업을 완료합니다 | ✔ |
| 방송 | 모든 수신자에게 동시에 메시지를 전송합니다 | ✘ |
| 코 루틴 | 특정 위치에서 실행 및 재개를 허용하는 서브 루틴 | ✘ |
| 발전기 | 한 번에 하나씩 일련의 값을 생성합니다 | ✔ |
| 원자로 | Demultiplexes 서비스 요청은 동시에 서비스 핸들러에게 전달되어 관련 요청 처리기와 동기식으로 발송합니다. | ✘ |
| 병행 | 많은 독립 작업을 완료합니다 | ✔ |
| 생산자 소비자 | 작업 실행에서 작업을 분리합니다 | ✔ |
메시징 패턴
| 무늬 | 설명 | 상태 |
|---|
| 팬인 | 작업 싱크 (예 : 서버)에 대한 작업을 퍼뜨립니다. | ✔ |
| 팬 아웃 | 근로자 (예 : 생산자) 간의 작업을 배포합니다. | ✔ |
| 선물 및 약속 | 초기에 동기화 목적으로 알려지지 않은 결과의 장소 보유자 역할을합니다. | ✔ |
| 게시/구독 | 정보를 주제를 구독 한 수신자 모음에 정보를 전달합니다. | ✔ |
| 밀기 및 당기기 | 파이프 라인에 배열 된 여러 작업자에게 메시지를 배포합니다 | ✘ |
안정성 패턴
| 무늬 | 설명 | 상태 |
|---|
| 벌크 헤드 | 실패 격리 원칙을 시행합니다 (즉, 계단식 실패를 방지) | ✘ |
| 회로 차단기 | 요청이 실패 할 때 요청의 흐름을 중지합니다. | ✔ |
| 사선 | 응답 확률이 낮아지면 클라이언트가 응답 대기를 중지 할 수 있습니다 (예 : 페이지 새로 고침을 위해 10 초를 기다린 후) | ✔ |
| 실패 | 요청 시작시 필요한 리소스의 가용성을 확인하고 요구 사항이 충족되지 않은 경우 실패합니다. | ✘ |
| 악수 | 구성 요소가 더 이상 부하를 취할 수 있는지 묻습니다. | ✘ |
| 정상 상태 | 리소스를 축적하는 모든 서비스에 대해 다른 서비스는 해당 자원을 재활용해야합니다. | ✘ |
프로파일 링 패턴
| 무늬 | 설명 | 상태 |
|---|
| 타이밍 기능 | 함수를 감싸고 실행을 기록합니다 | ✔ |
관용구
| 무늬 | 설명 | 상태 |
|---|
| 기능적 옵션 | 기본값과 관용적 재정의 정상으로 깨끗한 API를 만들 수 있습니다. | ✔ |
패턴 방지
패턴 구현
go-pattern-examples