Típusalagút

A Wikipédiából, a szabad enciklopédiából
Jump to navigation Jump to search

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[szerkesztés]

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[szerkesztés]

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a Type Tunnel pattern című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.