Template Method: diferència entre les revisions
Contingut suprimit Contingut afegit
Cap resum de modificació |
(Cap diferència)
|
Revisió del 20:51, 20 nov 2014
El patró de disseny Template Method ens permet definir l'esquelet del programa, que més tard podrà ser redefinit parcialment o totalment en les classes inferiors.
Example
/**
* An abstract class that is common to several games in
* which players play against the others, but only one is
* playing at a given time.
*/
public abstract class Joc{
protected int torn;
abstract void inicialitzarJoc();
abstract void ferJugada(int player);
abstract boolean fiJoc();
abstract void mostrarGuanyador();
/* A template method */
public final void jugar(int torn) {
this.torn = torn;
inicialitzarJoc();
int j = 0;
while (!fiJoc()) {
ferJugada(j);
j = (j + 1) % torn;
}
mostrarGuanyador();
}
}
//Now we can extend this class in order
//to implement actual games:
public class Monopoli extends Joc {
/* Implementation of necessary concrete methods */
public void inicialitzarJoc() {
// Inicialitzar jugadors
// Inicialitzar diners inicials
}
public void ferJugada(int jugador) {
// Fer una tirada
}
public boolean fiJoc() {
// Retorna true si el joc a finalitzat
// segons les regles del Monopoliu
}
public int intGuanyador() {
// Mostra qui guanya
}
/* Altres funcions del joc. */
// ...
}
public class Escacs extends Joc {
/* Implementation of necessary concrete methods */
public void inicialitzarJoc() {
// Initialize players
// Put the pieces on the board
}
public void ferJugada(int player) {
// Process a turn for the player
}
public boolean fiJoc() {
// Return true if in Checkmate or
// Stalemate has been reached
}
public void mostrarGuanyador() {
// Mostrar el guanyador
}
/* Altres funcions del joc. */
// ...
}
Referències
- Patrones de diseño: elementos de software orientado a objetos reutilizable. Pearson Educación, 2002. ISBN 978-84-7829-059-8.