Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Фасад делегирует запросы клиентов подходящим объектам внутри подсистемы.Содержание книги
Поиск на нашем сайте Классы подсистемы ничего не «знают» о существовании фасада, то есть не хранят ссылок на него. Фасад может также упростить процесс переноса системы на другие платформы, поскольку уменьшается вероятность того, что в результате изменения одной подсистемы понадобится изменять и все остальные.
Шаблон “фасад” структурный шаблон проектирования, позволяющий скрыть сложность системы путем сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы. Проблема: как обеспечить унифицированный интерфейс с набором разрозненных реализаций или интерфейсов, например, с подсистемой, если нежелательно высокое связывание с этой подсистемой или реализация подсистемы может измениться? Решение: определить одну точку взаимодействия с подсистемой — фасадный объект, обеспечивающий общий интерфейс с подсистемой, и возложить на него обязанность по взаимодействию с её компонентами. Фасад — это внешний объект, обеспечивающий единственную точку входа для служб подсистемы. Реализация других компонентов подсистемы закрыта и не видна внешним компонентам. На C# using System; Namespace Library { class SubsystemA { public string OperationA1() { return "Subsystem A, Method A1\n"; } public string OperationA2() { return "Subsystem A, Method A2\n"; } } class SubsystemB { public string OperationB1() { return "Subsystem B, Method B1\n"; } public string OperationB2() { return "Subsystem B, Method B2\n"; } } class SubsystemC { public string OperationC1() { return "Subsystem C, Method C1\n"; } public string OperationC2() { return "Subsystem C, Method C2\n"; } } public class Facade { private SubsystemA a = new SubsystemA(); private SubsystemB b = new SubsystemB(); private SubsystemC c = new SubsystemC(); public void Operation1() { Console.WriteLine("Operation 1\n" + a.OperationA1() + a.OperationA2() + b.OperationB1()); } public void Operation2() { Console.WriteLine("Operation 2\n" + b.OperationB2() + c.OperationC1() + c.OperationC2()); } } } Class Program { static void Main(string[] args) { Facade.Operation1(); Facade.Operation2(); // Wait for user Console.Read(); } } // пример Namespace Sample { // The 'Subsystem ClassA' class class CarModel { public void SetModel() { Console.WriteLine(" CarModel - SetModel"); } } /// <summary> /// The 'Subsystem ClassB' class /// </summary> class CarEngine { public void SetEngine() { Console.WriteLine(" CarEngine - SetEngine"); } } // The 'Subsystem ClassC' class class CarBody { public void SetBody() { Console.WriteLine(" CarBody - SetBody"); } } // The 'Subsystem ClassD' class class CarAccessories { public void SetAccessories() { Console.WriteLine(" CarAccessories - SetAccessories"); } } // The 'Facade' class public class CarFacade { private CarModel model; private CarEngine engine; private CarBody body; private CarAccessories accessories; public CarFacade() { model = new CarModel(); engine = new CarEngine(); body = new CarBody(); accessories = new CarAccessories(); } public void CreateCompleteCar() { Console.WriteLine("******** Creating a Car **********\n"); model.SetModel(); engine.SetEngine(); body.SetBody(); accessories.SetAccessories(); Console.WriteLine("\n***** Car creation is completed*****"); } } // Facade Pattern Demo class Program { static void Main(string[] args) { CarFacade facade = new CarFacade(); facade.CreateCompleteCar(); Console. Read (); } } } У паттерна фасад есть следующие преимущества: 1. Изолирует клиентов от компонентов подсистемы 2. Позволяет ослабить связанность между подсистемой и ее клиентами. 3. Фасад не исключает возможности приложениям напрямую обращаться к классам подсистемы, если это необходимо. Таким образом, у вас есть выбор между простотой и общностью. Совет конечно очевидный: как можно только в крайних случаях прибегайте к прямому взаимодействию с классом за фасадом, лучше если возможно все же как-нибудь обобщить/абстрагировать эту операцию и добавить ее в сам фасад. Заместитель (Proxy)
|
||
|
Последнее изменение этой страницы: 2021-11-27; просмотров: 111; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.176 (0.007 с.) |