patterns/facade.dart

81 lines
1.7 KiB
Dart
Raw Permalink Normal View History

2022-03-29 09:52:34 +03:00
//позволяющий скрыть сложность системы путём
//сведения всех возможных внешних вызовов к одному объекту,
//делегирующему их соответствующим объектам системы.
2022-03-01 10:30:23 +03:00
class Grinder {
String _type;
Grinder(this._type);
void grind() {
2022-03-29 09:52:34 +03:00
print("Перемалываю $_type!");
2022-03-01 10:30:23 +03:00
}
}
class Maker {
String _type;
Maker(this._type);
void fill() {
2022-03-29 09:52:34 +03:00
print("Заполняю $_type машину!");
2022-03-01 10:30:23 +03:00
}
void retrieve() {
2022-03-29 09:52:34 +03:00
print("Получаю готовый $_type!");
2022-03-01 10:30:23 +03:00
}
void start() {
2022-03-29 09:52:34 +03:00
print("Включаю $_type машину!");
2022-03-01 10:30:23 +03:00
}
}
2022-03-29 09:52:34 +03:00
class Human {
2022-03-01 10:30:23 +03:00
String _beverage;
2022-03-29 09:52:34 +03:00
Human(this._beverage);
2022-03-01 10:30:23 +03:00
void drink() {
2022-03-29 09:52:34 +03:00
print("Пью $_beverage!");
2022-03-01 10:30:23 +03:00
}
}
class MorningFacade {
2022-03-29 09:52:34 +03:00
final _coffeeDrinker = Human("кофе");
final _coffeeGrinder = Grinder("кофейные зерна");
final _coffeeMaker = Maker("кофе");
2022-03-01 10:30:23 +03:00
void prepareCoffee() {
2022-03-29 09:52:34 +03:00
print("\r\Готовлю кофе...");
2022-03-01 10:30:23 +03:00
_coffeeGrinder.grind();
_coffeeMaker
2022-03-29 09:52:34 +03:00
..fill()
..start();
print("Кофе варится!");
2022-03-01 10:30:23 +03:00
}
void drinkCoffee() {
_coffeeMaker.retrieve();
_coffeeDrinker.drink();
}
}
void main() {
var typicalMorning = MorningFacade();
2022-03-29 09:52:34 +03:00
print("Проснулся и иду на кухню.");
2022-03-01 10:30:23 +03:00
typicalMorning.prepareCoffee();
typicalMorning.drinkCoffee();
}
2022-03-29 09:52:34 +03:00
/*
Проснулся и иду на кухню.
Готовлю кофе...
Перемалываю кофейные зерна!
Заполняю кофе машину!
Включаю кофе машину!
Кофе варится!
Получаю готовый кофе!
Пью кофе!
*/