Difference between revisions of "Template Method Pattern (padrão de desenho)"

From Wiki**3

(Exemplo)
Line 13: Line 13:
 
Café, Chá, BebidaQuente.
 
Café, Chá, BebidaQuente.
  
[[category:PO 2005/2006]]
+
Este exemplo mostra a evolução de uma aplicação à medida que são aplicadas técnicas de programação com objectos, em que se refactoriza algum código, e de aplicação de padrões, neste caso, o ''template method''.
 +
 
 +
=== Situação Inicial ===
 +
 
 +
Na situação inicial há repetição de código e não há abstracção de conceitos comuns nem, por isso, reutilização.
 +
 
 +
 
 +
 
 +
=== Segundo Cenário: Abstracção de Características Comuns ===
 +
 
 +
Nesta situação abstrairam-se algumas das características comuns e procurou-se reutilizar o máximo de funcionalidade. Note-se que, ainda assim, há repetição da estrutura do "algoritmo" de aquecimento.
 +
 
 +
 
 +
 
 +
=== Terceiro Cenário: Aplicação do Padrão Template Method ===
 +
 
 +
Manteve-se a abstracção conseguida no segundo cenário e aplicou-se o padrão template method. O resultado é o desaparecimento do algoritmo repetido: agora aparece apenas na superclasse e as partes dependentes das subclasses são definidas por cada uma. Note-se que a interface é agora imposta pela superclasse e que pode haver necessidade de renomear alguns dos métodos existentes (ou, alternativamente, de os chamar a partir dos que implementam a interface devida à aplicação do padrão).
 +
 
 +
 
 +
 
 +
[[category:PO]]

Revision as of 20:22, 21 November 2006

Material correspondente à aula 25.

O padrão "template method" corresponde à definição do esqueleto de um algoritmo de uma operação em que alguns passos são delegados em subclasses. O padrão permite que as subclasses redefinam partes do algoritmo sem a estrutura do algoritmo seja alterada.

Estrutura

O padrão template method tem a seguinte estrutura de classes:

Templatemethod-dpcd.png

Exemplo

Café, Chá, BebidaQuente.

Este exemplo mostra a evolução de uma aplicação à medida que são aplicadas técnicas de programação com objectos, em que se refactoriza algum código, e de aplicação de padrões, neste caso, o template method.

Situação Inicial

Na situação inicial há repetição de código e não há abstracção de conceitos comuns nem, por isso, reutilização.


Segundo Cenário: Abstracção de Características Comuns

Nesta situação abstrairam-se algumas das características comuns e procurou-se reutilizar o máximo de funcionalidade. Note-se que, ainda assim, há repetição da estrutura do "algoritmo" de aquecimento.


Terceiro Cenário: Aplicação do Padrão Template Method

Manteve-se a abstracção conseguida no segundo cenário e aplicou-se o padrão template method. O resultado é o desaparecimento do algoritmo repetido: agora aparece apenas na superclasse e as partes dependentes das subclasses são definidas por cada uma. Note-se que a interface é agora imposta pela superclasse e que pode haver necessidade de renomear alguns dos métodos existentes (ou, alternativamente, de os chamar a partir dos que implementam a interface devida à aplicação do padrão).