- Abstract Document
- Abstract Factory
- Active Object
- Acyclic Visitor
- Adapter
- Aggregator Microservices
- Ambassador
- API Gateway
- Arrange/Act/Assert
- Async Method Invocation
- Balking
- Bridge
- Builder
- Business Delegate
- Bytecode
- Chain of responsibility
- Client Session
- Collecting Parameter
- Command
- Commander
- Composite
- Composite Entity
- Composite View
- Context object
- Converter
- Data Locality
- Decorator
- Delegation
- Dependency Injection
- Dirty Flag
- Double Buffer
- Embedded Value
- Event Aggregator
- Extension objects
- Facade
- Factory
- Factory Kit
- Factory Method
- Feature Toggle
- Flux
- Flyweight
- Front Controller
- Game Loop
- Gateway
- Health Check Pattern
- Identity Map
- Intercepting Filter
- Interpreter
- Iterator
- Layers
- Lazy Loading
- Leader Election
- Marker Interface
- Mediator
- Memento
- Module
- MonoState
- Multiton
- Null Object
- Object Mother
- Object Pool
- Observer
- Page Controller
- Page Object
- Parameter Object
- Partial Response
- Pipeline
- Poison Pill
- Presentation Model
- Priority Queue Pattern
- Property
- Prototype
- Proxy
- Registry
- Retry
- Role Object
- Separated Interface
- Servant
- Sharding
- Single Table Inheritance Pattern
- Singleton
- Spatial Partition
- Special Case
- Specification
- State
- Step Builder
- Strangler
- Strategy
- Subclass Sandbox
- Table Module
- Template method
- Throttling
- Trampoline
- Transaction Script
- Twin
- Type-Object
- Update Method
- Value Object
- Visitor
Introduction to 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.
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.
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.
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.
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.
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).
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
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.
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.