Реализации на С++
Template Method
Общая реализация на языке С++
class AbstractClass
{
public:
void templateMethod()
{
primitiveOperation();
concreteOperation();
hook();
}
virtual ~AbstractClass() = default;
protected:
virtual void primitiveOperation() = 0;
void concreteOperation()
{
cout << "concreteOperation;" << endl;
}
virtual void hook()
{
cout << "hook Base;" << endl;
}
};
class ConcreteClassA : public AbstractClass
{
protected:
void primitiveOperation() override
{
cout << "primitiveOperation A;" << endl;
}
};
class ConcreteClassB : public AbstractClass
{
protected:
void primitiveOperation() override
{
cout << "primitiveOperation B;" << endl;
}
void hook() override
{
cout << "hook B;" << endl;
}
};
#include <iostream>
using namespace std;
int main()
{
ConcreteClassA ca;
ConcreteClassB cb;
ca.templateMethod();
cb.templateMethod();
}
Last updated
Was this helpful?