patterns/strategy.dart

45 lines
1.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

abstract class CoffeeStrategy {
String announce(String roast);
}
class AmericanoStrategy implements CoffeeStrategy {
String announce(String roast) => "Американо с $roast бобами";
}
class LatteStrategy implements CoffeeStrategy {
String announce(String roast) => "Латте с $roast бобами";
}
class EspressoStrategy implements CoffeeStrategy {
String announce(String roast) => "Эспрессо с $roast бобами";
}
class CoffeeDrinker {
CoffeeStrategy preferredDrink;
String name;
CoffeeDrinker(this.name, this.preferredDrink);
}
void main() {
var americano = AmericanoStrategy();
var latte = LatteStrategy();
var espresso = EspressoStrategy();
var p1 = CoffeeDrinker("Андрей", latte);
var p2 = CoffeeDrinker("Никита", americano);
var p3 = CoffeeDrinker("Олег", espresso);
final String roastOfTheDay = "Итальянскими";
for (var person in [p1, p2, p3]) {
print(
"Меня зовут ${person.name}. Я сейчас пью ${person.preferredDrink.announce(roastOfTheDay)}!\r");
}
/*
Меня зовут Андрей. Я сейчас пью Латте с Итальянскими бобами!
Меня зовут Никита. Я сейчас пью Американо с Итальянскими бобами!
Меня зовут Олег. Я сейчас пью Эспрессо с Итальянскими бобами!
*/
}