Паттерн Фасад— предоставляет унифицированный интерфейс к группе интерфейсов подсистемы. Фасад определяет высокоуровневый интерфейс, упрощающий работу с подсистемой.
Если вам понадобится упростить большой интерфейс или семейство сложных интерфейс или семейство сложных интерфейсов.
Фасад изолирует клиента от сложной подсистемы.
Реализация фасада основана на композиции и делегировании.
Для подсистемы можно реализовать несколько фасадов.
Рассмотрим такой пример, многие из вас управляют автомобилем, ну или по крайне мере представляют, как это делается. Для управления автомобиля его нужно завести, повернув ключ системы зажигания, что приведет к запуску двигателя. Но мы понятия не имеем как это все работает, так как это скрыто все за фасадом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Паттерн_Фасад { public class Engine //Двигатель { public void EngineOn() { Console.WriteLine("Запустили двигатель"); } public void EngineOff() { Console.WriteLine("Заглушили двигатель"); } } public class HeadlightSystem //система работы фар { public void HeadlightSystemOn() { Console.WriteLine("Включили фары"); } public void HeadlightSystemOff() { Console.WriteLine("Выключили фары"); } } public class FuelSupplySystem //система подачи топлива { public void FuelSupplySystemOn() { Console.WriteLine("Подаем топливо в систему"); } public void FuelSupplySystemOff() { Console.WriteLine("Прекращаем подачу топлива"); } } public class FacadeCar { Engine engine; HeadlightSystem headlightSystem; FuelSupplySystem fuelSupplySystem; public FacadeCar(Engine engine, HeadlightSystem headlightSystem, FuelSupplySystem fuelSupplySystem) { this.engine = engine; this.headlightSystem = headlightSystem; this.fuelSupplySystem = fuelSupplySystem; } public void KeyStart() { Console.WriteLine("Повернули ключ зажигания"); fuelSupplySystem.FuelSupplySystemOn(); engine.EngineOn(); headlightSystem.HeadlightSystemOn(); } public void KeyStop() { Console.WriteLine("Повернули ключ зажигания"); headlightSystem.HeadlightSystemOff(); fuelSupplySystem.FuelSupplySystemOff(); engine.EngineOff(); } } class Program { static void Main(string[] args) { FacadeCar car = new FacadeCar(new Engine(),new HeadlightSystem(), new FuelSupplySystem()); car.KeyStart(); Console.WriteLine(new string('*',50)); car.KeyStop(); Console.ReadKey(); } } } |
1 2 3 4 5 6 7 8 9 10 |
Повернули ключ зажигания Подаем топливо в систему Запустили двигатель Включили фары ************************************************** Повернули ключ зажигания Выключили фары Прекращаем подачу топлива Заглушили двигатель |