Тип Тип туннеля - Type Tunnel pattern

В компьютерное программирование, а Тип Туннель шаблон Это место, где группа физически не связанных типов может быть туннелирована через расширяемый уровень адаптации и представлена ​​в унифицированной форме на нижележащий уровень для манипуляции в целом. Он состоит из следующего:

  1. общий, расширяемый интерфейс слой, используемый в клиентском коде, который может взаимодействовать с разнородными типами, и
  2. туннельный механизм, который преобразует разнородные типы, выраженные в клиентском коде, в тип понимается
  3. бетон API слой, который управляет одним конкретным типом.

Механизм туннеля включает Прокладки и преобразование конструкторы.

Примеры

C ++

Пример использования прокладок в качестве туннельного механизма.

// 1. Интерфейсный слойшаблон <typename S> пустота фу(S s) {        бар(to_cstr_ptr(s)); }// 2. Туннельный механизм: прокладкаchar const* to_cstr_ptr(int) { ... }char const* to_cstr_ptr(char const*) { ... }char const* to_cstr_ptr(стандартное::строка) { ... }// 3. Конкретный слой APIпустота бар(char const*) { ... }// Применениеint основной() {    фу(123);     фу("строка C");     фу(стандартное::строка("std :: string")); }

Смотрите также

использованная литература

  • Уилсон, Мэтью (август 2003 г.), «Обобщенное манипулирование строкой: прокладки доступа и туннелирование типов», Журнал пользователей C / C ++, 21 (8)
  • Уилсон, Мэтью. «Разрушение монолита: передовой дизайн на C ++ без компромиссов». Получено 11 марта 2010.