A számítógép-programozásban a típusalagút programtervezési minta lehetővé teszi, hogy egymással kapcsolatban nem álló típusokat együtt lehessen kezelni. Ezt egy kiterjeszthető adaptációs réteggel valósítja meg, ami egységes formában áll a kliensek rendelkezésére. A következőket tartalmazza: Általános, kiterjeszthető interfész, ami különböző típusokat tud kezelni. A kliensek ezt az interfészt ismerik. Alagút mechanizmus, ami közvetít a különféle típusok és az API által használt egységes típus között Belső API, ami az egyetlen belső típust használja.

Ilyen alagút a Shim és a különböző konverziós konstruktorok.

Példa A következő példa C++-ban íródott, és Shimet használ.

// 1. Interface layer template <typename S> void foo(S s)

bar(to_cstr_ptr(s)); }

// 2. Tunnel mechanism: Shim char const* to_cstr_ptr(int) { ... } char const* to_cstr_ptr(char const*) { ... } char const* to_cstr_ptr(std::string) { ... }

// 3. Concrete API layer void bar(char const*) { ... }

// Usage int main() { foo(123); foo("a C string"); foo(std::string("a std::string")); } Források

Fordítás

Kategória:Programtervezési minták