Паттерны / Структурные паттерны
image

using System;
using System.Collections.Generic;

TextAdapter GetTextAdapter() {
    TextAdapter adapter = new TextAdapter();
    adapter.Add("line 1");
    adapter.Add("line 2");
    return adapter;
}

//Client
var adapter = GetTextAdapter();
var text = adapter.GetText();
//text: line 1
//      line 2

Console.WriteLine(text);

//Target
interface IText {
    //Request()
    String GetText();
}

//Adaptee
class StringList {
    readonly List<String> _rows = 
    new List<String>();

    //SpecificRequest()
    public String GetString() {
        return string.Join("\n", _rows);
    }

    public void Add(String value) {
        _rows.Add(value);
    }
}

//Adapter
class TextAdapterStringListIText {
    //Request()
    public String GetText() {
        return GetString();
    }
}


Преобразует интерфейс класса в другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов.