patterns/strategy.dart

45 lines
1.4 KiB
Dart
Raw Normal View History

2022-03-01 10:30:23 +03:00
abstract class CoffeeStrategy {
String announce(String roast);
}
class AmericanoStrategy implements CoffeeStrategy {
2022-03-29 01:30:58 +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 {
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 {
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 01:30:58 +03:00
Меня зовут Андрей. Я сейчас пью Латте с Итальянскими бобами!
Меня зовут Никита. Я сейчас пью Американо с Итальянскими бобами!
Меня зовут Олег. Я сейчас пью Эспрессо с Итальянскими бобами!
2022-03-01 10:30:23 +03:00
*/
}