#include <iostream>
using namespace std;
class ApplicationFramework
{
protected:
// кроки алгоритму перевизначатимуться в похідних класах
virtual void custom1() = 0;
virtual void custom2() = 0;
public:
// сам алгоритм незмінний
void templateMethod(int n = 1)
{
for (int i = 0; i< n; ++i)
{
custom1();
custom2();
}
}
};
class MyAppl : public ApplicationFramework
{
protected:
void custom1() { cout << " Hello, "; }
void custom2() { cout << " World!\n"; }
};
class CalcAppl : public ApplicationFramework
{
protected:
void custom1()
{
cout << " Results of important calculations are : \n";
}
void custom2()
{
cout << " 2 + 2 = " << 2 + 2 << " \t2x2 = " << 2 * 2 << '\n';
}
};
void main()
{
MyAppl app;
app.templateMethod(3);
CalcAppl cApp;
cApp.templateMethod();
}