-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTemplateMethod.cpp
81 lines (68 loc) · 3.13 KB
/
TemplateMethod.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
using namespace std;
// Абстрактный класс Animal
class Animal {
public:
// Шаблонный метод makeSound, который определяет алгоритм произнесения звуков животным
void makeSound() {
cout << getSpeciesName() << " says " << getSound() << endl;
}
// Методы, которые должны быть реализованы в каждом подклассе
virtual string getSpeciesName() = 0;
virtual string getSound() = 0;
};
// Подкласс Dog
class Dog : public Animal {
public:
string getSpeciesName() override {
return "Dog";
}
string getSound() override {
return "Woof!";
}
};
// Подкласс Cat
class Cat : public Animal {
public:
string getSpeciesName() override {
return "Cat";
}
string getSound() override {
return "Meow!";
}
};
int main() {
// Создание объектов Dog и Cat
Animal* dog = new Dog();
Animal* cat = new Cat();
// Вызов шаблонного метода makeSound для каждого объекта
dog->makeSound();
cat->makeSound();
delete dog;
delete cat;
}
/*
Пример кода на паттерн Шаблонный метод на языке C++.
Предположим, у нас есть абстрактный класс Animal, который
определяет общий интерфейс для всех животных, а также реализует
шаблонный метод makeSound, который определяет алгоритм
произнесения звуков животным.
Здесь класс Animal является абстрактным классом, который
определяет интерфейс для всех животных. Метод makeSound
является шаблонным методом, который определяет алгоритм
произнесения звуков животным. Классы Dog и Cat являются
конкретными подклассами Animal, которые реализуют методы
getSpeciesName и getSound, которые возвращают имя вида
животного и звук, соответственно. В функции main создаются
объекты Dog и Cat, после чего вызывается метод makeSound
для каждого объекта. Как результат, на экран выводятся звуки,
производимые каждым животным.
*/
// https://refactoring.guru/ru/design-patterns/template-method
/*
Шаблонный метод — это поведенческий паттерн проектирования,
который определяет скелет алгоритма, перекладывая
ответственность за некоторые его шаги на подклассы.
Паттерн позволяет подклассам переопределять шаги алгоритма,
не меняя его общей структуры.
*/