Está en la página 1de 6

Patrones de Diseño

Los patrones de diseño de software son un conjunto de estrategias de programación


diseñadas para dar solución a problemas comunes. Cada patrón se centra en resolver
un problema determinado, de forma que disponemos de una solución estándar que
garantiza la resolución eficaz de un problema particular.

Otro aspecto más a destacar es que los patrones de diseño no son un ente estático,
sino que evolucionan atendiendo a los nuevos retos que surgen con los avances en el
área de la programación.

Las estrategias de resolución de algunos problemas comunes aportan varios


beneficios, estos son algunos de ellos:

• Ahorro de tiempo en el planteamiento y el diseño de la solución, pues no es


necesario reinventar la rueda.
• Existencia de extensa documentación.
• Resultados previsibles y garantizados.
• Traspaso ágil de conocimientos.
• Estandarización de vocabulario.
• Facilidad para obtener soporte comunitario.

Hoy en día, podríamos considerar dividir los patrones en las siguientes categorías:

Patrones de diseño creacionales ................................................................................................... 2


Patrones de diseño estructural....................................................................................................... 2
Patrones de diseño de comportamiento ....................................................................................... 3
Patrones de diseño funcional ......................................................................................................... 3
Patrones de diseño de concurrencia ............................................................................................. 4
Patrones de diseño de arquitectura............................................................................................... 5
Patrones de diseño de computación distribuida (Contenerizacion) ......................................... 6
Patrones de diseño creacionales

Definen cómo puede crearse un objeto. Habitualmente esto incluye aislar los detalles de
la creación del objeto, de forma que su código no dependa de los tipos de objeto que hay
y, por lo tanto, no deba ser modificado al añadir un nuevo tipo de objeto.

• Abstract factory
• Builder
• Dependency injection
• Factory method
• Lazy initialization
• Multiton
• Object pool
• Prototype
• RAII
• Singleton

Patrones de diseño estructural

Su función es determinar cómo las clases y objetos se combinan para formar estructuras.
Estas estructuras permitirán que se agreguen nuevas funcionalidades

• Adapter
• Bridge
• Composite
• Decorator
• Delegation
• Facade
• Flyweight
• Front controller
• Marker interface
• Module
• Proxy
• Twin
Patrones de diseño de comportamiento

Tratan a los objetos que manejan tipos particulares de acciones dentro de un programa.
Éstos encapsulan procesos debe ejecutarse dentro de la funcionalidad de la aplicación,
como interpretar un lenguaje, completar una petición, moverse a través de una secuencia
o implementar un algoritmo.

• Blackboard
• Chain of responsibility
• Command
• Interpreter
• Iterator
• Mediator
• Memento
• Null object
• Observer
• Servant
• Specification
• State
• Strategy
• Template method
• Visitor

Patrones de diseño funcional

Es un patrón de diseño que permite seleccionar un algoritmo en tiempo de ejecución. En


lugar de implementar un solo algoritmo directamente, el código recibe instrucciones en
tiempo de ejecución sobre cuál usar.

• Closure
• Currying
• Function composition
• Functor
• Monad
• Generator
Patrones de diseño de concurrencia

Se puede considerar como una barrera, en donde es un tipo de método de sincronización.


Una barrera para un grupo de subprocesos significa que cualquier sub-proceso debe
detenerse en este punto y no puede continuar hasta que todos los subprocesos lleguen a
esta barrera.

• Active object
• Actor
• Balking
• Barrier
• Binding properties
• Coroutine
• Compute kernel
• Double-checked locking
• Event-based asynchronous
• Fiber
• Futex
• Futures and promises
• Guarded suspension
• Immutable object
• Join
• Lock
• Messaging
• Monitor
• Nuclear
• Proactor
• Reactor
• Read write lock
• Scheduler
• Thread pool
• Thread-local storage
Patrones de diseño de arquitectura

Dan una descripción de los elementos y el tipo de relación que tienen junto con un
conjunto de restricciones sobre cómo pueden ser usados

• ADR
• Active record
• Broker
• Client–server
• CBD
• DAO
• DTO
• DDD
• ECB
• ECS
• EDA
• Front controller
• Identity map
• Interceptor
• Implicit invocation
• Inversion of control
• Model 2
• MOM
• Microservices
• MVA
• MVC
• MVP
• MVVM
• Monolithic
• Multitier
• Naked objects
• ORB
• P2P
• Publish–subscribe
• PAC
• REST
• SOA
• Service locator
• SN
• SBA
• Specification
Patrones de diseño de computación distribuida (Contenerizacion)

La contenerización establece un límite natural y las interfaces se utilizan para comunicarse


fuera del límite. La ventaja de tener este límite es que cualquier situación inesperada puede
restringirse al rango de impacto más pequeño. Cuando estamos construyendo un sistema
grande y complejo.

• Ambassador
• Anti-Corruption Layer
• Bulkhead
• Cache-Aside
• Circuit Breaker
• CQRS
• Compensating Transaction
• Competing Consumers
• Compute Resource Consolidation
• Event Sourcing
• External Configuration Store
• Federated Identity
• Gatekeeper
• Index Table
• Leader Election
• MapReduce
• Materialized View
• Pipes
• Filters
• Priority Queue
• Publisher-Subscriber
• Queue-Based Load Leveling
• Retry
• Scheduler Agent Supervisor
• Sharding
• Sidecar
• Strangler
• Throttling
• Valet Key

También podría gustarte