A estrutura de padrões generalizada é a estrutura padrão que define o comportamento padrão comum através de todas as implementações de padrão. Essa estrutura implementa os protocolos de serviço necessários que ativam o padrão no produto. Os componentes de plug-in padrão de núcleo contêm a estrutura padrão que fornece as classes básicas nas quais as implementações de padrão se especializam.
A estrutura padrão é definida em termos de metamodelos de recurso UML e RAS (Reusable Asset Specification). Uma representação UML do padrão persiste no projeto de plug-in padrão. Os padrões operativos de modelo operam em modelos UML e seus elementos. O serviço de padrão descobre os plug-ins de padrão disponíveis a partir de várias fontes, incluindo plug-ins instalados e repositórios RAS local ou remoto. O serviço de padrão também identifica as definições de padrão, cria instâncias de padrão e suporta diretamente os componentes de UI do cliente. Tanto o serviço de padrão quanto a estrutura do padrão são plug-ins Eclipse.
O modelo de programação padrão simplifica a autoria de padrão porque o autor precisa fornecer código apenas para o comportamento padrão. Os locais onde você inclui o comportamento de expansão são conhecidos como métodos hot spot, e são indicados pelos métodos de expansão vazios. Para obter ajuda com design de código padrão, consulte o pacote denominado com.ibm.xtools.patterns.framework que contém as classes AbstractPatternParameter e PatternParameterValue.
A classe AbstractPatternParameter é a implementação comum de um parâmetro de padrão, e outras subclasses de parâmetro de padrão concreto a utilizam e especializam ainda mais. O parâmetro de padrão abstrato é a abstração primária no tempo de execução que permite uma extensão por meio de parâmetros, dependências de parâmetros e representantes. Essa classe contém métodos hot spot que você pode substituir. A maior parte de implementações de padrão implementa alguns ou muitos desses métodos hot spot sobrepondo seus métodos. Os métodos hot spot mais freqüentemente implementados são os métodos expand e isValid, os quais você pode utilizar para implementar o comportamento do aplicativo padrão, e resolver e determinar a validade dos valores do parâmetro especificado.
A classe PatternParameterValue encapsula todas as informações que são necessárias para qualificar um valor para o parâmetro de padrão adequado e instância de padrão. Essa classe contém subclasses aninhadas que fornecem comportamento específico de estado que corresponde ao estado do valor de parâmetro padrão. Por exemplo, quando um método de expandir é chamado, o comportamento específico que o autor de padrão fornece é incluído no método de expandir e a assinatura faz referência ao tipo direto do valor de parâmetro padrão.
Você pode utilizar métodos de atualização para suprimir a expansão total ou parcial do parâmetro do cliente até que os valores necessários sejam especificados nos parâmetros do fornecedor. A classe AbstractPatternDependency (com.ibm.xtools.patterns.framework) contém os métodos de atualização. Essa classe representa uma dependência entre dois parâmetros de padrão; o parâmetro de padrão de dependência depende do parâmetro de dependência. A classe observa o parâmetro de dependência e notifica o parâmetro de dependência sob os vários métodos de atualização acionados por estado.
Você normalmente associa uma dependência de parâmetro padrão a um parâmetro padrão instanciando uma dependência no construtor de um parâmetro padrão. As dependências são armazenadas e gerenciadas na classe de parâmetro de padrão abstrato. Essa classe deve ter uma subclasse de uma implementação de dependência concreta que pode sobrescrever os métodos hot spot definidos para alterar o comportamento do tempo de execução da dependência. Por padrão, você pode localizar os métodos hot spot examinando quais métodos não são marcados como final. Nessa classe, os hot spots são principalmente as variantes do método de atualização sobrecarregado. Para obter uma lista de métodos hot spot e seus aplicativos, consulte o Guia do Desenvolvedor de Padrões do Rational.
A estrutura de padrões especializados estende a estrutura generalizada e fornece aprimoramentos relacionados à função. As bibliotecas de padrões que utilizam a estrutura especializada dependem de estrutura especializada e generalizada. A estrutura de padrões especializada suporta a rastreabilidade de funções participantes de padrão na biblioteca de padrão de design. Os autores de padrão devem escolher a estrutura de padrões especializada como raiz da estrutura de padrões para que sua biblioteca de padrões utilize os recursos de rastreabilidade e marcadores de função para participantes de padrão.
Os padrões de design que o produto inclui utilizam a estrutura de padrões especializada para gerenciar os elementos do modelo de argumento padrão de leitura durante a aplicação do padrão. As instâncias de padrão possuem relacionamentos de rastreio para elementos envolvidos. Você pode utilizar os elementos de modelo a partir de modelos de leitura como parâmetros para alguns padrões. O suporte do produto para autoria e aplicação de perfis UML significa que você pode utilizar estereótipos de perfil e enumerações de perfil associadas como parâmetros de padrão.
A estrutura de padrões especializada gerencia modelos de leitura assegurando que somente os elementos no modelo de instância de padrão específico recebam gravações. Também, o suporte de rastreabilidade e funcionalidade de palavra-chave para funções é construído para estrutura especializada, e não é mais implementada separadamente no código GoF.
Para padrões que são raiz na estrutura de padrões especializados, você pode ver os efeitos da estrutura após um autor de padrão associar um elemento de modelo a uma determinada função. Por exemplo, se um autor de padrão instacializa um padrão a partir de uma biblioteca de padrão que está em raiz na estrutura de padrões especializados, após a instanciação, o autor do padrão pode interagir com a ocorrência de padrão. O autor do padrão pode interagir arrastando um elemento de modelo para um compartimento de função de padrão arbitrário. A ocorrência de padrão também é conhecida como instância de padrão. O compartimento de função de padrão também é conhecido como o parâmetro de padrão.
Como o padrão é parte de uma biblioteca de padrões que está em raiz na estrutura particular de padrões especializados, ocorrem dois efeitos adicionais:
A marcação da função do participante de padrão permite que um usuário padrão, também conhecido como aplicador padrão, conheça quais funções um determinado elemento de modelo assumiu. Por exemplo, suponha que um padrão simples tenha três funções, também conhecidas como parâmetros de padrão: Past, Present e Future. Após um participante padrão, também conhecido como argumento de padrão, ligar-se a uma determinada função, um estereótipo leve, que é conhecido como uma palavra-chave, é aplicado a esse elemento de modelo participante. Se um elemento de modelo chamado Cornelius for ligado à função Future, o elemento de modelo Cornelius agora contém uma palavra-chave Future e é visualizado como *!ENTITY!**!ENTITY!*Future Cornelius em vez da antiga Cornelius.
Outro recurso da estrutura de padrão especializada é a rastreabilidade de funções participantes de padrão. Por exemplo, se um padrão prático com uma função, Singularity, tiver uma ligação de participante padrão com essa função, o relacionamento de abstração é criado a partir do elemento de modelo de ocorrência padrão para o elemento de modelo participante. Nesse exemplo, o elemento de modelo participante padrão denominado Slim é ligado à função padrão denominada Singularity, que cria um relacionamento de abstração entre o elemento de modelo que é a ocorrência padrão e Slim. Nesse caso, a ocorrência padrão é uma colaboração UML denominada Instância de Padrão de Singularidade 1. A ocorrência de padrão possui o relacionamento de abstração.
Para obter ajuda com design de código padrão, consulte o pacote com.ibm.xtools.patterns.framework.specialized que contém a classe AbstractPatternLibrary, a qual oferece mais recursos do que a estrutura de padrões generalizados padrão.