Típusalagút
Megjelenés
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]- Wilson, Matthew (August 2003), "Generalized String Manipulation: Access Shims and Type Tunneling", C/C++ Users Journal 21 (8), <http://www.drdobbs.com/cpp/184401689>. Hozzáférés ideje: 2017-12-21
- Wilson, Matthew: Breaking Up The Monolith: Advanced C++ Design without Compromise. (Hozzáférés: 2010. március 11.)
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. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.