Saltar al contenido principal
Programming Principles

There are certain universal laws and principles in software development that guide architects, programmers, and anyone needing to design software. This page lists quite a few of those principles, although it's far from complete. This page is a fork of programming-principles repository by Lars Kappert, who has done most of the work collecting the material.


iluwatarAlrededor de 9 min
Catalogo de patrones de diseño

iluwatarAlrededor de 3 min
30 Segundos de Java

Inspirada en 30 seconds of code, esta es una colección de
fragmentos de código reutilizables, probados y compatibles con Java 17 que se pueden copiar y pegar en 30 segundos o
menos. Si está interesado en contribuir a esta biblioteca, consulte las instrucciones.


iluwatarAlrededor de 11 min
Abstract Document

Propósito

Usar propiedades dinámicas y conseguir la flexibilidad de los lenguajes no tipados manteniendo la seguridad de tipos.

Explicación

El uso del patrón Abstract Document permite gestionar propiedades no estáticas adicionales. Este patrón usa el concepto
de atributos para permitir seguridad de tipos y propiedades separadas de diferentes clases en un grupo de interfaces.


iluwatarAlrededor de 2 minStructuralExtensibility
Abstract Factory

También conocido como

Kit

Propósito

Proveer de una interfaz para crear familias de objetos relacionados dependientes sin especificar su clase concreta.

Explicación

Ejemplo del mundo real

Para crear un reino necesitamos objetos con una temática común. El reino élfico necesita un rey elfo, un castillo élfico y un ejército élfico mientras que el reino orco necesita un rey orco, un castillo orco y un ejército orco. Hay una dependencia entre los objetos del reino.


iluwatarAlrededor de 3 minCreationalGang of Four
Active Object

Propósito

El patrón de diseño de objeto activo desacopla la ejecución del método de la invocación del método para los objetos que residen en su propio hilo de control. El objetivo es introducir la concurrencia mediante el uso de la invocación de métodos asíncronos y un planificador para manejar solicitudes.


iluwatarAlrededor de 1 minConcurrencyPerformance
Acyclic Visitor

Propósito

Permitir añadir nuevas funciones a jerarquías de clases existentes sin que estas se vean afectadas, y sin crear los problemáticos círculos de dependencias que son inherentes al patrón GoF (Gang of Four) Visitor.

Explicación

Ejemplo del mundo real

Tenemos una jerarquía de clases módem. Los modems de esta jerarquía deben ser visitados por un algoritmo externo basándose en unos filtros (el módem es compatible con Unix o DOS).


iluwatarAlrededor de 2 minBehavioralExtensibility
Adapter

También conocido como

Wrapper

Propósito

Convertir la interfaz de una clase en otra que espera el cliente. El patrón Adapter permite a clases funcionar en conjunto con otras clases con las que no podrían de otra forma por problemas de compatibilidad.

Explicación


iluwatarAlrededor de 3 minStructuralGang of Four
Aggregator Microservices

Propósito

El usuario realiza una sola llamada al servicio del agregador y, a continuación, el agregador llama a cada microservicio relevante.

Explicación

Ejemplo del mundo real

Nuestro mercado web necesita información sobre los productos y su inventario actual. Hace una llamada a un agregador
servicio que a su vez llama al microservicio de información del producto y al microservicio de inventario del producto que devuelve la
información combinada.


iluwatarAlrededor de 1 minArchitecturalCloud distributedDecouplingMicroservices
Ambassador

Propósito

Proporcionar una instancia de servicio auxiliar a un cliente y delegar en ella las funcionalidades comunes de un recurso compartido.

Explicación

Ejemplo real

Un servicio remoto tiene muchos clientes accediendo a una función que este servicio proporciona. El servicio es una aplicación heredada y
es imposible actualizarla. Un gran número de solicitudes por parte de los usuarios están causando problemas de conectividad. Nuevas reglas
respecto a la frecuencia de solicitudes deberían implementarse junto con comprobaciones de latencia y registros del lado del cliente.


iluwatarAlrededor de 3 minStructuralDecouplingCloud distributed