Template method pattern
|
|
Template:Comp-sci-stub In software engineering, the template method pattern is a design pattern.
A template method defines the skeleton of an algorithm in terms of abstract operations which subclasses override to provide concrete behaviour.
Example in Java
/**
* 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.
*/
abstract class Game{
private int playersCount;
abstract void initializeGame();
abstract void makePlay(int player);
abstract boolean endOfGame();
abstract void printWinner();
/* A template method : */
final void playOneGame(int playersCount){
this.playersCount = playersCount;
initializeGame();
int j = 0;
while( ! endOfGame() ){
makePlay( j );
j = (j + 1) % playersCount;
}
printWinner();
}
}
Now we can extend this class in order to implement existing games:
class Monopoly extends Game{ /* Implementation of necessary concrete méthodes */ void initializeGame(){ // ... } void makePlay(int player){ // ... } boolean endOfGame(){ // ... } void printWinner(){ // ... } /* Specific declarations for the Monopoly game. */ // ... }
class Chess extends Game{ /* Implementation of necessary concrete méthodes */ void initializeGame(){ // ... } void makePlay(int player){ // ... } boolean endOfGame(){ // ... } void printWinner(){ // ... } /* Specific declarations for the Chess game. */ // ... }
