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. */ // ... }