Пример использования тонкого и толстого адаптера (оболочки) - PullRequest
2 голосов
/ 11 февраля 2011

Я не могу найти информацию о том, в чем разница между тонким и толстым адаптером. Я был бы признателен, если бы кто-то смог предоставить описание, сопровождаемое простым примером (обратите внимание, что этот пример не обязательно должен быть на C ++).

Заранее спасибо.

РЕДАКТИРОВАТЬ: мое видение этого напоминает шаблон адаптера класса , который требует минимальных изменений для соответствия ожидаемому интерфейсу.

1 Ответ

1 голос
/ 11 февраля 2011

Это довольно просто.

Например, допустим, вы хотите использовать функцию stat в своем коде, но хотите иметь возможность модульного тестирования своего кода или дажеизменить, какую функцию использовать во время выполнения.Затем вы должны добавить базовый класс:

struct FunctionApiBase
{
 virtual ~FunctionApiBase{}

 virtual int stat(const char *path, struct stat *buf) = 0;
};

реализовать его:

struct RealFunctionApi : public FunctionApiBase
{
  virtual int stat(const char *path, struct stat *buf)
  {
    ::stat( path, buf );
  }
};

Затем создать объект типа RealFunctionApi и вызвать его stat вместо реальной функции.

Если я понимаю текст в вашей ссылке, толстый адаптер содержит только более сложный код.

...