La infraestructura de patrones generalizada es la infraestructura predeterminada que define el comportamiento predeterminado común en todas las implementaciones de patrones. Esta infraestructura implementa los protocolos de servicio necesarios que activan el patrón en el producto. Los componentes de plug-ins de patrones de núcleo contienen la infraestructura predeterminada que proporciona las clases base en las que están especializadas las implementaciones de patrones.
La estructura de patrón está definida en términos de metamodelos de activos RAS (especificación de activos reutilizables) y UML. Una representación UML del patrón persiste en el proyecto de plug-in de patrones. Los patrones operativos basados en modelo funcionan en modelos UML y sus elementos. El servicio de patrones descubre los plug-ins de patrones disponibles de varios orígenes, incluidos los plug-ins instalados y los repositorios RAS locales o remotos. El servicio de patrones también identifica definiciones de patrones, crea instancias de patrones y da soporte directamente a los componentes de UI de cliente. Tanto el servicio de patrones como la infraestructura de patrones son plug-ins de Eclipse.
El modelo de programación de patrones simplifica la autoría de patrones porque el autor debe proporcionar código únicamente para el comportamiento del patrón. Las ubicaciones en las que añade el comportamiento de expansión se conocen como métodos de zonas activas y se indican mediante métodos de expansión vacíos. Para obtener ayuda sobre el diseño de código patrones, consulte el paquete denominado com.ibm.xtools.patterns.framework que contiene las clases AbstractPatternParameter y PatternParameterValue.
La clase AbstractPatternParameter es la implementación común para un parámetro de patrón y otras subclases de parámetros de patrón concretas la utilizan indirectamente y se especializan más en ella. El parámetro de patrón abstracto es la abstracción primaria en tiempo de ejecución que permite que se produzca una extensión a través de parámetros, dependencias de parámetros y delegados. Esta clase contiene métodos de zonas interactivas que puede alterar temporalmente. La mayoría de las implementaciones de patrón implementan algunas o la mayoría de estos métodos de zonas interactivas alterando temporalmelnte sus métodos. Los métodos de zonas interactivas implementados con mayor frecuencia son los métodos expand e isValid, que puede utilizar para implementar el comportamiento de aplicación del patrón y resolver y determinar la validez de los valores de parámetro especificados.
La clase PatternParameterValue engloba toda la información necesaria para calificar un valor en el parámetro de patrón y la instancia de patrón. Esta clase contiene subclases anidadas que proporcionan un comportamiento específico del estado que corresponde al estado del valor de parámetro del patrón. Por ejemplo, cuando se llama a un método expand, el comportamiento específico que el autor del patrón proporciona se añade al método expand y la firma hace referencia al tipo directo del valor de parámetro del patrón.
Puede utilizar métodos de actualización para suprimir la expansión total o parcial del parámetro de cliente hasta que se especifican los valores necesarios en los parámetros del proveedor. La clase AbstractPatternDependency (com.ibm.xtools.patterns.framework) contiene los métodos de actualización. Esta clase representa una dependencia entre dos parámetros de patrón; el parámetro de patrón dependiente depende del parámetro de dependencia. La clase cumple el parámetro de dependencia y notifica el parámetro dependiente según varios métodos de actualización desencadenados por el estado.
El usuario suele asociar una dependencia de parámetro de patrón con un parámetro de patrón creando una instancia de una dependencia en el constructor de un parámetro de patrón. Las dependencias se almacenan y gestionan en la clase de parámetro de patrón abstracta. Esta clase debe tener una subclase de una implementación de dependencia concreta que pueda alterar temporalmente los métodos de zonas interactivas definidos para cambiar el comportamiento de tiempo de ejecución de dependencia. De forma predeterminada, puede encontrar los métodos de zonas interactivas examinando qué métodos no están marcados como finales. En esta clase, las zonas interactivas son principalmente las variantes del método de actualización sobrecargado. En el caso de una escucha de los métodos de zonas interactivas y su aplicación, consulte la publicación Guía de desarrollador de patrones de Rational.
La infraestructura de patrones especializada amplía la infraestructura generalizada y proporciona mejoras relacionadas con el rol a los patrones. Las bibliotecas de patrones que utilizan la infraestructura especializada dependen de la infraestructura especializada y generalizada. La infraestructura de patrones especializada da soporte a la rastreabilidad de roles de participantes de patrones en la biblioteca de patrones de diseño. Los autores de patrones deben elegir la infraestructura de patrones especializada como infraestructura de patrones raíz de su biblioteca de patrones para utilizar las funciones de rastreabilidad y de marcado de roles para los participantes de patrones.
Los patrones de diseño que el producto incluye utilizan la infraestructura de patrones especializada para gestionar elementos de modelo de argumento de patrón de sólo lectura durante la aplicación de patrón. Las instancias de patrón son propiedad de las relaciones de rastreo a elementos implicados. Puede utilizar elementos de modelo a partir de modelos de sólo lectura como parámetros para algunos patrones. El soporte de producto para la autoría y la aplicación de perfiles de UML significa que puede utilizar estereotipos de perfil y enumeraciones de perfil asociadas como parámetros de patrón.
La infraestructura de patrones especializada gestiona modelos de sólo lectura al garantizar que sólo los elementos en el modelo de instancia de patrón específico reciban escrituras. Además, el soporte de rastreabilidad y la funcionalidad de palabras claves para roles se crea en la infraestructura especializada y ya no se implementa en el código GoF.
Para patrones que tienen sus raíces en la infraestructura de patrones especializada, puede ver los efectos de la infraestructura después de que un autor de patrón asocie un elemento de modelo con un determinado rol. Por ejemplo, si un autor de patrón crea una instancia de un patrón a partir de una biblioteca de patrones que tiene sus raíces en la infraestructura de patrones especializada, después de la instanciación, el autor del patrón puede interactuar con la aparición del patrón. El autor del patrón puede interactuar arrastrando un elemento de modelo a un compartimento de rol de patrón arbitrario. La aparición del patrón se conoce también como instancia del patrón. El compartimiento de rol de patrón se conoce también como parámetro de patrón.
Debido a que el patrón forma parte de una biblioteca de patrón que tiene sus raíces en la infraestructura de patrones especializada, se producen dos efectos adicionales:
El marcado de rol de participante de patrón permite a un usuario de patrón, conocido también como aplicador de patrones, saber qué roles debe asumir un elemento de modelo específico. Por ejemplo, suponga que un patrón simple tiene tres roles, también conocidos como parámetros de patrón: Past, Presenty Future. Después de que un participante de patrón, conocido también como argumento de patrón, se enlace con un determinado rol, un estereotipo ligero, que se conoce como palabra clave, se aplica a dicho elemento de modelo participante. Si un elemento de modelo denominado Cornelius está enlazado al rol Future, el elemento de modelo Cornelius contiene ahora una palabra clave Future y se visualiza como *!ENTITY!**!ENTITY!*Future Cornelius en lugar de la anterior Cornelius.
Otra característica de la infraestructura de patrones especializada es la rastreabilidad de roles de participantes de patrones. Por ejemplo, si un patrón sencillo con un rol, Singularity, tiene un participante de patrón enlazado a este rol, se crea una relación de abstracción del elemento de modelo patrón-aparición al elemento de modelo participante. En este ejemplo, el elemento de modelo de participante de patrón denominado Slim está enlazado al rol de patrón denominado Singularity, que crea una relación de abstracción entre el elemento de modelo que es la aparición del patrón y Slim. En este caso, la aparición del patrón es una colaboración UML denominada Singularity Pattern Instance 1. La aparición del patrón es propietaria de la relación de abstracción.
Para obtener ayuda sobre el diseño de código patrones, consulte el paquete denominado com.ibm.xtools.patterns.framework.specialized que contiene la clase AbstractPatternLibrary que ofrece más características que la infraestructura de patrones generalizada estándar.