C++ Template Pattern

What is template design pattern?

  • Template pattern is a behavioral design pattern.
  • This has nothing to do with C++ templates as such.
  • Template patterns is a common form in object oriented programming. Having an abstract base class (one or more pure virtual functions) is a simple example of template design pattern.
  • In the template pattern, parts of program which are well defined like an algorithm are defined as a concrete method in the base class. The specifics of implementation are left to the derived classes by making these methods as abstract in the base class.
  • The method which implements the algorithm is also refered as template method and the class which implements this methods as the template class.

Demonstrate the usage of template design pattern

#include <iostream>using namespace std;// Base class// Template classclass Account {public:// Abstract Methodsvirtual void Start() = 0;virtual void Allow() = 0;virtual void End() = 0;virtual int MaxLimit() = 0;// Template Methodvoid Withdraw(int amount) {Start();int limit = MaxLimit();if ( amount < limit ) {Allow();}else {cout << "Not allowed" << endl;}End();}};// Derived classclass AccountNormal : public Account {public:void Start() {cout << "Start ..." << endl;}void Allow() {cout << "Allow ..." << endl;}void End() {cout << "End ..." << endl;}int MaxLimit() {return 1000;}};// Derived classclass AccountPower : public Account {public:void Start() {cout << "Start ..." << endl;}void Allow() {cout << "Allow ..." << endl;}void End() {cout << "End ..." << endl;}int MaxLimit() {return 5000;}};int main() {AccountPower power;power.Withdraw(1500);AccountNormal normal;normal.Withdraw(1500);}

OUTPUT:-

Start ...Allow ...End ...Start ...Not allowedEnd ...