2022-03-29 09:52:34 +03:00
|
|
|
|
//предназначенный для определения семейства алгоритмов,
|
|
|
|
|
//инкапсуляции каждого из них и обеспечения их взаимозаменяемости.
|
|
|
|
|
//Это позволяет выбирать алгоритм путём определения соответствующего класса
|
|
|
|
|
|
2022-03-01 10:30:23 +03:00
|
|
|
|
abstract class CoffeeStrategy {
|
|
|
|
|
String announce(String roast);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class AmericanoStrategy implements CoffeeStrategy {
|
2022-03-29 09:52:34 +03:00
|
|
|
|
String announce(String roast) => "Американо с $roast кофейными зернами";
|
2022-03-01 10:30:23 +03:00
|
|
|
|
}
|
|
|
|
|
|
2022-03-29 01:30:58 +03:00
|
|
|
|
class LatteStrategy implements CoffeeStrategy {
|
2022-03-29 09:52:34 +03:00
|
|
|
|
String announce(String roast) => "Латте с $roast кофейными зернами";
|
2022-03-01 10:30:23 +03:00
|
|
|
|
}
|
|
|
|
|
|
2022-03-29 01:30:58 +03:00
|
|
|
|
class EspressoStrategy implements CoffeeStrategy {
|
2022-03-29 09:52:34 +03:00
|
|
|
|
String announce(String roast) => "Эспрессо с $roast кофейными зернами";
|
2022-03-01 10:30:23 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class CoffeeDrinker {
|
|
|
|
|
CoffeeStrategy preferredDrink;
|
|
|
|
|
String name;
|
|
|
|
|
CoffeeDrinker(this.name, this.preferredDrink);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void main() {
|
|
|
|
|
var americano = AmericanoStrategy();
|
2022-03-29 01:30:58 +03:00
|
|
|
|
var latte = LatteStrategy();
|
|
|
|
|
var espresso = EspressoStrategy();
|
2022-03-01 10:30:23 +03:00
|
|
|
|
|
2022-03-29 01:30:58 +03:00
|
|
|
|
var p1 = CoffeeDrinker("Андрей", latte);
|
|
|
|
|
var p2 = CoffeeDrinker("Никита", americano);
|
|
|
|
|
var p3 = CoffeeDrinker("Олег", espresso);
|
2022-03-01 10:30:23 +03:00
|
|
|
|
|
2022-03-29 01:30:58 +03:00
|
|
|
|
final String roastOfTheDay = "Итальянскими";
|
2022-03-01 10:30:23 +03:00
|
|
|
|
|
2022-03-29 01:30:58 +03:00
|
|
|
|
for (var person in [p1, p2, p3]) {
|
|
|
|
|
print(
|
|
|
|
|
"Меня зовут ${person.name}. Я сейчас пью ${person.preferredDrink.announce(roastOfTheDay)}!\r");
|
2022-03-01 10:30:23 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2022-03-29 09:52:34 +03:00
|
|
|
|
Меня зовут Андрей. Я сейчас пью Латте с Итальянскими кофейными зернами!
|
|
|
|
|
Меня зовут Никита. Я сейчас пью Американо с Итальянскими кофейными зернами!
|
|
|
|
|
Меня зовут Олег. Я сейчас пью Эспрессо с Итальянскими кофейными зернами!
|
2022-03-01 10:30:23 +03:00
|
|
|
|
*/
|
|
|
|
|
}
|