Saltar al contenido principal
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
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
Curiously Recurring Template Pattern

Nombre / clasificación

Curiously Recurring Template Pattern

También conocido como

Recursive Type Bound, Recursive Generic

Propósito

Permitir que los componentes derivados hereden ciertas funcionalidades de un componente base que sean compatibles con el tipo derivado.


iluwatarAlrededor de 2 minStructuralExtensibilityInstantiation
Decorator

También conocido como

Wrapper

Propósito

Adjunte responsabilidades adicionales a un objeto de forma dinámica. Los decoradores proporcionan una alternativa
flexible a la subclase para ampliar la funcionalidad.

Explicación

Ejemplo real

En las colinas cercanas vive un trol furioso. Normalmente va con las manos desnudas, pero a veces lleva un arma. Para
armar al troll no es necesario crear un nuevo troll sino decorarlo dinámicamente con un arma adecuada.


iluwatarAlrededor de 2 minStructuralGang of FourExtensibility
Extension objects

Propósito

Anticipar que la interfaz de un objeto debe ampliarse en el futuro. Las interfaces adicionales se definen mediante objetos de extensión (Extension objects).

Explicación

Ejemplo real

Suponga que está desarrollando un juego basado en Java para un cliente y, en mitad del proceso de desarrollo, le sugieren nuevas funcionalidades. El patrón Extension Objects permite a su programa adaptarse a cambios imprevistos con una refactorización mínima, especialmente al integrar funcionalidades adicionales en su proyecto.


iluwatarAlrededor de 2 minBehavioralExtensibility
Factory Kit

También conocido como

Abstract-Factory

Propósito

Define una fábrica de contenido inmutable con interfaces de constructor y fábrica separadas.

Explicación

Ejemplo del mundo real

Imagina una fábrica de armas mágicas que puede crear cualquier tipo de arma que se desee. Cuando la fábrica se
desempaqueta, el maestro recita los tipos de armas necesarios para prepararla. Después de eso, cualquiera de esos
tipos
de armas pueden ser invocados en un instante.


iluwatarAlrededor de 2 minCreationalExtensibility
Factory Method

También conocido como

Virtual Constructor

Propósito

Definir una interfaz para crear un objeto, pero dejar que las subclases decidan qué clase instanciar. El método de
fábrica permite que una clase difiera la instanciación a las subclases.

Explicación

Ejemplo del mundo real


iluwatarAlrededor de 2 minCreationalExtensibilityGang of Four
Feature Toggle

También conocido como

Feature Flag

Propósito

Técnica utilizada en el desarrollo de software para controlar y gestionar el despliegue de características o funcionalidades específicas en un programa sin cambiar el código. Puede actuar como un interruptor de encendido/apagado de funciones en función del estado o las propiedades de otros valores del programa. Esto es similar a las pruebas A/B, en las que las funciones se despliegan en función de propiedades como la ubicación o el dispositivo. La implementación de este patrón de diseño puede aumentar la complejidad del código, y es importante recordar eliminar el código redundante si este patrón de diseño se utiliza para eliminar gradualmente un sistema o característica.


iluwatarAlrededor de 2 minBehavioralExtensibility
Null Object

Propósito

En la mayoría de los lenguajes orientados a objetos, como Java o C#, las referencias pueden ser nulas. Estas referencias deben comprobarse para asegurarse de que no son nulas antes de invocar cualquier método, porque normalmente los métodos no pueden invocarse sobre referencias nulas. En lugar de utilizar una referencia nula para indicar la ausencia de un objeto (por ejemplo, un cliente inexistente), se utiliza un objeto que implementa la interfaz esperada, pero cuyo cuerpo de método está vacío. La ventaja de este enfoque sobre una implementación por defecto es que un objeto nulo es muy predecible y no tiene efectos secundarios: no hace nada.


iluwatarAlrededor de 2 minBehavioralExtensibility
Parameter Object

Propósito

La sintaxis del lenguaje Java no permite declarar un método con un valor predefinido para un parámetro. Probablemente la mejor opción para conseguir parámetros de método predefinidos en Java es utilizar la sobrecarga de métodos. La sobrecarga de métodos permite declarar varios métodos con el mismo nombre pero con un número diferente de parámetros. Pero el principal problema con la sobrecarga de métodos como solución para los valores de los parámetros por defecto se revela cuando un método acepta múltiples parámetros. Crear un método sobrecargado para cada posible combinación de parámetros puede resultar engorroso. Para solucionar este problema, se utiliza el patrón Objeto Parámetro.


iluwatarAlrededor de 2 minBehavioralExtensibility