2025-05-12 03:32:04 +03:00
|
|
|
|
/*
|
|
|
|
|
* Author: Nikolay Dvurechensky
|
|
|
|
|
* Site: https://www.dvurechensky.pro/
|
|
|
|
|
* Gmail: dvurechenskysoft@gmail.com
|
|
|
|
|
* Last Updated: 12 мая 2025 03:31:02
|
|
|
|
|
* Version: 1.0.7
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/* Адаптер
|
2024-10-05 09:15:54 +03:00
|
|
|
|
Конвенртирует интерфейс класса в другой интерфейс,
|
|
|
|
|
ожидаемый клиентом. Позволяет классам
|
|
|
|
|
с разными интерфейсами работать вместе.
|
|
|
|
|
*/
|
|
|
|
|
class Program
|
|
|
|
|
{
|
|
|
|
|
static void Main()
|
|
|
|
|
{
|
|
|
|
|
#region Пример №1 - базовое
|
|
|
|
|
var man = new Driver();
|
|
|
|
|
var car = new Auto(); //машина она едет также как мотоцикл, всё отлично
|
|
|
|
|
var camelTransport = //но мы хотим добраться на пешем транспорте (на верблюде)
|
|
|
|
|
new CamelToTransport(new Camel());
|
|
|
|
|
|
|
|
|
|
man.Travel(camelTransport);
|
|
|
|
|
man.Travel(car);
|
|
|
|
|
|
|
|
|
|
Console.ReadKey();
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface ITransport
|
|
|
|
|
{
|
|
|
|
|
void Drive();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Шаблон автомобиля
|
|
|
|
|
/// </summary>
|
|
|
|
|
class Auto : ITransport
|
|
|
|
|
{
|
|
|
|
|
public void Drive()
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(GetType().Name + " Move");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Шаблон верблюда
|
|
|
|
|
/// </summary>
|
|
|
|
|
class Camel
|
|
|
|
|
{
|
|
|
|
|
public void Move()
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(GetType().Name + " Move");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Шаблон движения верблюда
|
|
|
|
|
/// </summary>
|
|
|
|
|
class CamelToTransport : ITransport
|
|
|
|
|
{
|
|
|
|
|
Camel camel;
|
|
|
|
|
|
|
|
|
|
public CamelToTransport(Camel camel)
|
|
|
|
|
{
|
|
|
|
|
this.camel = camel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Drive()
|
|
|
|
|
{
|
|
|
|
|
camel.Move();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Шаблон путешественника
|
|
|
|
|
/// </summary>
|
|
|
|
|
class Driver
|
|
|
|
|
{
|
|
|
|
|
public void Travel(ITransport transport)
|
|
|
|
|
{
|
|
|
|
|
transport.Drive();
|
|
|
|
|
}
|
|
|
|
|
}
|