Адаптер (Adapter)

Наділяє новим інтерфейсом, клас що не можна змінювати

Робить сумісними дві системи

Може перетворювати данні на потрібні для незмінного класу

Створюємо клас, що наслідує потрібний нам інтерфейс, 

і клас, що ми мажмо адаптувати під свої потреби, 

маючи реалізацію приводимо її до потрібного нам інтерфейсу

1. Реалізація без екземпляру

interface INeedInterface {

     void Send();

}

class AtherClass {    // який ми не можемо змінювати, бо він ще десь використовується

     public void SendLeter() { }

}

class Adapter : AtherClass, INeedInterface   // клас обгортка

{

     public void Send()

     {

          this.SendLeter();

     }

}

2. Реалізація через екземпляр

class Adapter : INeedInterface

{

     AtherClass obj = new AtherClass();

     public void Send()

     {

          obj.SendLeter();

     }

}