Template design pattern
- Template design 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.
Template design pattern implementation
#include <iostream> using namespace std; // Base class // Template class class Account { public: // Abstract Methods virtual void Start() = 0; virtual void Allow() = 0; virtual void End() = 0; virtual int MaxLimit() = 0; // Template Method void Withdraw(int amount) { Start(); int limit = MaxLimit(); if ( amount < limit ) { Allow(); } else { cout << "Not allowed" << endl; } End(); } }; // Derived class class AccountNormal : public Account { public: void Start() { cout << "Start ..." << endl; } void Allow() { cout << "Allow ..." << endl; } void End() { cout << "End ..." << endl; } int MaxLimit() { return 1000; } }; // Derived class class 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 allowed End ...
0 comments:
Post a Comment