56 lines
896 B
Dart
56 lines
896 B
Dart
abstract class Drinkable {
|
|
void pour();
|
|
}
|
|
|
|
class Beer implements Drinkable {
|
|
void pour() {
|
|
print("Pouring a delicious beer!");
|
|
}
|
|
}
|
|
|
|
class Coffee implements Drinkable {
|
|
void pour() {
|
|
print("Pouring a refreshing coffee!");
|
|
}
|
|
}
|
|
|
|
abstract class DrinkFactory {
|
|
Drinkable createDrink();
|
|
DrinkFactory();
|
|
}
|
|
|
|
class Pub implements DrinkFactory {
|
|
Drinkable createDrink() {
|
|
return Beer();
|
|
}
|
|
}
|
|
|
|
class CoffeeShop implements DrinkFactory {
|
|
Drinkable createDrink() {
|
|
return Coffee();
|
|
}
|
|
}
|
|
|
|
void main() {
|
|
var mood = "sleepy";
|
|
late DrinkFactory destination;
|
|
|
|
switch (mood) {
|
|
case "sleepy":
|
|
destination = CoffeeShop();
|
|
break;
|
|
case "done":
|
|
destination = Pub();
|
|
break;
|
|
default:
|
|
print("I only have two moods...");
|
|
}
|
|
|
|
var myBeverage = destination.createDrink();
|
|
myBeverage.pour();
|
|
|
|
/*
|
|
Pouring a refreshing coffee!
|
|
*/
|
|
}
|