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