
Patrones Go
Una colección curada de patrones de diseño y aplicaciones idiomáticos para el lenguaje GO.
Una bifurcación de tmrts/go-paterns, pero se fusionó con otras horquillas increíbles. puede ir con patrones de pruebas
Repos fusionado
- Fusionado: https://github.com/nynicg/go-patterns
- Fusionado: https://github.com/weichou1229/go-patterns
- Fusionado: https://github.com/jianhan/go-patterns
- Fusionado: https://github.com/sakari-ai/go-patterns
- Fusionado: https: //github.com/restudy/go-patterns
Patrones creacionales
| Patrón | Descripción | Estado |
|---|
| Abstracto de fábrica | Proporciona una interfaz para crear familias de objetos relatados | ✔ |
| Constructor | Construye un objeto complejo usando objetos simples | ✔ |
| Método de fábrica | Deja la instanciación de un objeto a una función especializada para crear instancias | ✔ |
| Piscina de objetos | Instanciar y mantener un grupo de objetos instancias del mismo tipo | ✔ |
| Semifallo | Restringe la instancia de un tipo a un objeto | ✔ |
Patrones estructurales
| Patrón | Descripción | Estado |
|---|
| Puente | Desacopla una interfaz de su implementación para que los dos puedan variar de forma independiente | ✔ |
| Compuesto | Encapsule y proporciona acceso a varios objetos diferentes | ✔ |
| Decorador | Agrega comportamiento a un objeto, estática o dinámicamente | ✔ |
| Fachada | Utiliza un tipo como API para varios otros | ✔ |
| Peso mosca | Reutiliza las instancias existentes de objetos con un estado similar/idéntico para minimizar el uso de recursos | ✔ |
| Apoderado | Proporciona un sustituto para que un objeto controle sus acciones | ✔ |
| Adaptador | Proporciona un sustituto para que un objeto controle sus acciones | ✔ |
Patrones de comportamiento
| Patrón | Descripción | Estado |
|---|
| Cadena de responsabilidad | Evite acoplar un remitente al receptor dando a más que un objeto la oportunidad de manejar la solicitud | ✔ |
| Dominio | Bundle un comando y argumentos para llamar más tarde | ✔ |
| Mediador | Conecta objetos y actúa como un proxy | ✔ |
| Recuerdo | Genere un token opaco que se pueda usar para volver a un estado anterior | ✔ |
| Observador | Proporcionar una devolución de llamada para la notificación de eventos/cambios a los datos | ✔ |
| Registro | Realice un seguimiento de todas las subclases de una clase dada | ✔ |
| Estado | Encapsula un comportamiento variable para el mismo objeto en función de su estado interno | ✔ |
| Estrategia | Habilita el comportamiento de un algoritmo para seleccionar en tiempo de ejecución | ✔ |
| Plantilla | Define una clase de esqueleto que defiende algunos métodos a las subclases | ✔ |
| Visitante | Separa un algoritmo de un objeto en el que opera | ✔ |
| Intérprete | Interpreta tu propio idioma o comandos compuestos | ✔ |
Patrones de sincronización
| Patrón | Descripción | Estado |
|---|
| Variable de condición | Proporciona un mecanismo para que los subprocesos renuncien temporalmente al acceso para esperar alguna condición | ✘ |
| Bloquear/mutex | Aplica un límite de exclusión mutua en un recurso para obtener acceso exclusivo | ✘ |
| Monitor | Combinación de patrones variables de mutex y condición | ✘ |
| Bloqueo de lectura-escritura | Permite el acceso de lectura paralelo, pero solo el acceso exclusivo en las operaciones de escritura a un recurso | ✔ |
| Semáforo | Permite controlar el acceso a un recurso común | ✔ |
Patrones de concurrencia
| Patrón | Descripción | Estado |
|---|
| N-Barrier | Evita que un proceso proceda hasta que todos los procesos n lleguen a la barrera | ✔ |
| Paralelismo limitado | Completa una gran cantidad de tareas independientes con límites de recursos | ✔ |
| Transmisión | Transfiere un mensaje a todos los destinatarios simultáneamente | ✘ |
| Corutina | Subrutinas que permiten suspender y reanudar la ejecución en ciertas ubicaciones | ✘ |
| Generadores | Produce una secuencia de valores uno a la vez | ✔ |
| Reactor | Demultiplexes Solicitudes de servicio entregadas simultáneamente a un controlador de servicios y los envía sincrónicamente a los manejadores de solicitud asociados | ✘ |
| Paralelismo | Completa una gran cantidad de tareas independientes | ✔ |
| Consumidor de productor | Separa las tareas de las ejecuciones de tareas | ✔ |
Patrones de mensajería
| Patrón | Descripción | Estado |
|---|
| Abanico | Funns tareas a un sumidero (por ejemplo, servidor) | ✔ |
| Abanico | Distribuye tareas entre los trabajadores (por ejemplo, productor) | ✔ |
| Futuros y promesas | Actúa como un poseedor de un resultado que inicialmente se desconoce para fines de sincronización | ✔ |
| Publicar/suscribirse | Pasa información a una colección de destinatarios que se suscribieron a un tema | ✔ |
| Empuje y tirar | Distribuye mensajes a múltiples trabajadores, organizados en una tubería | ✘ |
Patrones de estabilidad
| Patrón | Descripción | Estado |
|---|
| Mamparos | Haga cumplir un principio de contención de falla (es decir, previene fallas en cascada) | ✘ |
| Rompedor de circuito | Detiene el flujo de las solicitudes cuando es probable que falle las solicitudes | ✔ |
| Fecha límite | Permite a los clientes dejar de esperar una respuesta una vez que la probabilidad de respuesta se vuelve baja (por ejemplo, después de esperar 10 segundos para actualizar una página) | ✔ |
| Paso rápido | Comprueba la disponibilidad de los recursos requeridos al comienzo de una solicitud y falla si los requisitos no están satisfechos | ✘ |
| Apretón de manos | Pregunta a un componente si puede tomar más carga, si no puede, la solicitud está rechazada | ✘ |
| Estado estable | Para cada servicio que acumula un recurso, algún otro servicio debe reciclar ese recurso | ✘ |
Patrones de perfiles
| Patrón | Descripción | Estado |
|---|
| Funciones de tiempo | Envuelve una función y registra la ejecución | ✔ |
Modismos
| Patrón | Descripción | Estado |
|---|
| Opciones funcionales | Permite crear API limpias con valores predeterminados sensatos y anulaciones idiomáticas | ✔ |
Anti-paternos
| Patrón | Descripción | Estado |
|---|
Una implementación de patrones
examen de patrón