/*
* СТРУКТУРНЫЕ ПАТТЕРНЫ
*
* Глава_12: Адаптер (Adapter)
*
* - преобразует интерфейс одного класса в интерфейс другого, который
* ожидают клиенты. Адаптер делает возможной совместную работу
* классов с несовместимыми интерфейсами
*/
class Motorcycle { }
///
/// Что адаптируем
///
class Voskhod : Motorcycle
{
public void Sound() => Console.WriteLine("DRDRDR");
}
///
/// Цель на которую нужно ориентироваться при адаптации
///
interface Isport
{
void MakeNoise();
}
///
/// Пример готового объекта aдаптированного под цель
///
class Honda : Motorcycle, Isport
{
public void MakeNoise() => Console.WriteLine("hooondaaa");
}
///
/// Адаптер
/// Адаптирует простой класс под цель
///
class TuningVoskhod : Isport
{
Voskhod moto;
public TuningVoskhod(Voskhod moto) => this.moto = moto;
public void MakeNoise()
{
Console.WriteLine("trsh");
moto.Sound();
}
}
class Program
{
public static void Main(string[] args)
{
var tun = new TuningVoskhod(new Voskhod());
tun.MakeNoise();
}
}