mirror of
https://github.com/JakubVojvoda/design-patterns-cpp.git
synced 2025-12-17 12:54:36 +03:00
code refactoring: fix memory leaks, code style, etc.
This commit is contained in:
@@ -14,16 +14,20 @@
|
||||
* AbstractClass
|
||||
* implements a template method defining the skeleton of an algorithm
|
||||
*/
|
||||
class AbstractClass {
|
||||
class AbstractClass
|
||||
{
|
||||
public:
|
||||
void templateMethod() {
|
||||
virtual ~AbstractClass() {}
|
||||
|
||||
void templateMethod()
|
||||
{
|
||||
// ...
|
||||
primitiveOperation1();
|
||||
// ...
|
||||
primitiveOperation2();
|
||||
// ...
|
||||
}
|
||||
|
||||
|
||||
virtual void primitiveOperation1() = 0;
|
||||
virtual void primitiveOperation2() = 0;
|
||||
// ...
|
||||
@@ -35,14 +39,19 @@ public:
|
||||
* of the algorithm, there may be many Concrete classes, each implementing
|
||||
* the full set of the required operation
|
||||
*/
|
||||
class ConcreteClass : public AbstractClass {
|
||||
class ConcreteClass : public AbstractClass
|
||||
{
|
||||
public:
|
||||
void primitiveOperation1() {
|
||||
~ConcreteClass() {}
|
||||
|
||||
void primitiveOperation1()
|
||||
{
|
||||
std::cout << "Primitive operation 1" << std::endl;
|
||||
// ...
|
||||
}
|
||||
|
||||
void primitiveOperation2() {
|
||||
|
||||
void primitiveOperation2()
|
||||
{
|
||||
std::cout << "Primitive operation 2" << std::endl;
|
||||
// ...
|
||||
}
|
||||
@@ -54,6 +63,7 @@ int main()
|
||||
{
|
||||
AbstractClass *tm = new ConcreteClass;
|
||||
tm->templateMethod();
|
||||
|
||||
|
||||
delete tm;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user