
Vá padrões
Uma coleção com curadoria de padrões idiomáticos de design e aplicativos para a linguagem GO.
Um garfo de tmrts/pandanns, mas se fundiu com outros garfos incríveis. pode ir com padrões em exemplos
Repositórios mesclados
- Mesclado: https://github.com/nynicg/go-patterns
- Mesclado: https://github.com/weichou1229/go-patterns
- Mesclado: https://github.com/jianhan/go-patterns
- Mesclado: https://github.com/sakari-ai/go-patterns
- Mesclado : https: //github.com/restudy/go-patterns
Padrões criativos
| Padrão | Descrição | Status |
|---|
| Fábrica abstrata | Fornece uma interface para criar famílias de objetos relatados | ✔ |
| Construtor | Cria um objeto complexo usando objetos simples | ✔ |
| Método da fábrica | Adia a instanciação de um objeto para uma função especializada para criar instâncias | ✔ |
| Pool de objetos | Instancia e mantém um grupo de instâncias de objetos do mesmo tipo | ✔ |
| Singleton | Restringe a instanciação de um tipo a um objeto | ✔ |
Padrões estruturais
| Padrão | Descrição | Status |
|---|
| Ponte | Decouples uma interface de sua implementação para que os dois possam variar de forma independente | ✔ |
| Composto | Encapsula e fornece acesso a vários objetos diferentes | ✔ |
| Decorador | Adiciona comportamento a um objeto, estaticamente ou dinamicamente | ✔ |
| Fachada | Usa um tipo como uma API para vários outros | ✔ |
| Peso mosca | Reutiliza instâncias existentes de objetos com estado semelhante/idêntico para minimizar o uso de recursos | ✔ |
| Proxy | Fornece um substituto para um objeto para controlar suas ações | ✔ |
| Adaptador | Fornece um substituto para um objeto para controlar suas ações | ✔ |
Padrões comportamentais
| Padrão | Descrição | Status |
|---|
| Cadeia de responsabilidade | Evita acoplar um remetente ao destinatário, dando a mais do que o objeto a chance de lidar com a solicitação | ✔ |
| Comando | Pacotes um comando e argumentos para ligar mais tarde | ✔ |
| Mediador | Conecta objetos e atua como um proxy | ✔ |
| Lembrança | Gerar um token opaco que pode ser usado para voltar a um estado anterior | ✔ |
| Observador | Forneça um retorno de chamada para notificação de eventos/alterações nos dados | ✔ |
| Registro | Acompanhe todas as subclasses de uma determinada classe | ✔ |
| Estado | Encapsula o comportamento variável para o mesmo objeto com base em seu estado interno | ✔ |
| Estratégia | Ativa o comportamento de um algoritmo a ser selecionado em tempo de execução | ✔ |
| Modelo | Define uma classe de esqueleto que adia alguns métodos para subclasse | ✔ |
| Visitante | Separa um algoritmo de um objeto no qual ele opera | ✔ |
| Intérprete | Interprete seu próprio idioma ou comandos compostos | ✔ |
Padrões de sincronização
| Padrão | Descrição | Status |
|---|
| Variável de condição | Fornece um mecanismo para os threads desistirem temporariamente do acesso para esperar por alguma condição | ✘ |
| Lock/Mutex | Aplica limite de exclusão mútua em um recurso para obter acesso exclusivo | ✘ |
| Monitor | Combinação de padrões variáveis mutex e condição | ✘ |
| LEAD LOCK-WRITE | Permite acesso paralelo de leitura, mas apenas acesso exclusivo em operações de gravação em um recurso | ✔ |
| Semáforo | Permite controlar o acesso a um recurso comum | ✔ |
Padrões de simultaneidade
| Padrão | Descrição | Status |
|---|
| N-barriadora | Impede um processo de prosseguir até que todos os n processos cheguem à barreira | ✔ |
| Paralelismo limitado | Completa grande número de tarefas independentes com limites de recursos | ✔ |
| Transmissão | Transfere uma mensagem para todos os destinatários simultaneamente | ✘ |
| Coroutinas | Sub -rotinas que permitem suspender e retomar a execução em determinados locais | ✘ |
| Geradores | Produz uma sequência de valores um de cada vez | ✔ |
| Reator | Demultiplex Solicitações de serviço entregues simultaneamente a um manipulador de serviço e as despacha de forma síncrona para os manipuladores de solicitação associada | ✘ |
| Paralelismo | Completa grande número de tarefas independentes | ✔ |
| Consumidor produtor | Separa as tarefas das execuções de tarefas | ✔ |
Padrões de mensagens
| Padrão | Descrição | Status |
|---|
| Fan-in | Dannels Tarefas para um Work Sink (por exemplo, servidor) | ✔ |
| Fan-out | Distribui tarefas entre os trabalhadores (por exemplo, produtor) | ✔ |
| Futuros e promessas | Atua como um proprietário de um resultado que é inicialmente desconhecido para fins de sincronização | ✔ |
| Publicar/assinar | Passa informações para uma coleção de destinatários que se inscreveram em um tópico | ✔ |
| Empurre e puxe | Distribui mensagens para vários trabalhadores, organizados em um pipeline | ✘ |
Padrões de estabilidade
| Padrão | Descrição | Status |
|---|
| Anteparas | Aplica um princípio de contenção de falhas (ou seja, impede falhas em cascata) | ✘ |
| Breaker de circuito | Interrompe o fluxo dos pedidos quando os pedidos provavelmente falharão | ✔ |
| Prazo final | Permite que os clientes parem de esperar por uma resposta quando a probabilidade de resposta se tornar baixa (por exemplo, depois de esperar 10 segundos para uma atualização da página) | ✔ |
| Fail-Fast | Verifica a disponibilidade dos recursos necessários no início de uma solicitação e falha se os requisitos não forem satisfeitos | ✘ |
| Aperto de mão | Pergunta a um componente se ele pode levar mais carga, se não puder, a solicitação é recusada | ✘ |
| Curso estável | Para cada serviço que acumula um recurso, algum outro serviço deve reciclar esse recurso | ✘ |
Padrões de perfil
| Padrão | Descrição | Status |
|---|
| Funções de tempo | Envolve uma função e registra a execução | ✔ |
Expressões idiomáticas
| Padrão | Descrição | Status |
|---|
| Opções funcionais | Permite a criação de APIs limpas com padrões sãos e substituições idiomáticas | ✔ |
Anti-padronizados
Uma implementação de padrão
Exemplos de padrão go