-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplate_method.dart
59 lines (48 loc) · 1.01 KB
/
template_method.dart
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
void main() {
CaffeineBeverage caffeineBeverage = Tea();
caffeineBeverage.wantAddCondiments(true);
caffeineBeverage.prepareRecipe();
}
abstract class CaffeineBeverage {
bool wantsCondiments = false;
void prepareRecipe() {
//final
boilWater();
brew();
pourInCup();
if (wantsCondiments) {
addCondiments();
}
}
void brew();
void addCondiments();
void boilWater() {
print('вскипятить воду');
}
void pourInCup() {
print('перелить в чашку');
}
void wantAddCondiments(bool addCondiments) {
wantsCondiments = addCondiments;
}
}
class Coffee extends CaffeineBeverage {
@override
void addCondiments() {
print('добавить сахар');
}
@override
void brew() {
print('завариваем кофе');
}
}
class Tea extends CaffeineBeverage {
@override
void addCondiments() {
print('добавить лимон');
}
@override
void brew() {
print('завариваем чай');
}
}