patterns/abstract_factory.dart

59 lines
1.2 KiB
Dart

// предоставляет интерфейс для создания семейств взаимосвязанных
// или взаимозависимых объектов, не специфицируя их конкретных классов.
abstract class Drinkable {
void pour();
}
class Lemonade implements Drinkable {
void pour() {
print("Пью холодный лемонад!");
}
}
class Coffee implements Drinkable {
void pour() {
print("Пью горячий шоклад!");
}
}
abstract class DrinkFactory {
Drinkable createDrink();
DrinkFactory();
}
class Cafe implements DrinkFactory {
Drinkable createDrink() {
return Lemonade();
}
}
class CoffeeShop implements DrinkFactory {
Drinkable createDrink() {
return Coffee();
}
}
void main() {
var temperature = "cold";
late DrinkFactory destination;
switch (temperature) {
case "cold":
destination = CoffeeShop();
break;
case "warm":
destination = Cafe();
break;
default:
print("Мне ни холодно, ни жарко...");
}
var drinkable = destination.createDrink();
drinkable.pour();
/*
Пью горячий шоклад!
*/
}