Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / Лабораторная_работа_по_паттернам23.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
1.18 Mб
Скачать

Output.Txt: Результат выполнения

Facade initializes subsystems:

Subsystem1: Ready!

Subsystem2: Get ready!

Facade orders subsystems to perform the action:

Subsystem1: Go!

Subsystem2: Fire!

Фасад инициализирует подсистемы:

Подсистема1: Готов!

Подсистема2: Приготовьтесь!

Фасад заказывает подсистемы для выполнения действия:

Подсистема1: Go! Подсистема2: Огонь!

//На 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();

}

}

}

Фасад (Facade) представляет шаблон проектирования, который позволяет скрыть сложность системы с помощью предоставления упрощенного интерфейса для взаимодействия с ней.

У паттерна фасад есть следующие преимущества: