Arbeiten mit .NET: Entwurfsmuster/ Structural Patterns/ Adapter
Erscheinungsbild
Implementierung
[Bearbeiten]using System;
namespace Org.Wikibook.De.Csharp.Pattern.Structural.Adapter
{
/// <summary>
/// Implementierung der Schnittstelle,
/// die genutzt werden soll,
/// um auf die Funktionalität
/// der Bibliotheken des Drittanbieters zugreifen zu können,
/// ohne dabei Gedanken an notwendige Konvertierungen, etc.
/// aufwenden zu müssen.
/// </summary>
interface Schnittstelle
{
void Operation();
}
/// <summary>
/// Da die externe Bibliotheken von Drittanbietern
/// häufig nicht die Möglichkeit zur direkten Erweiterung bieten,
/// können wir über einen "Adapter" darauf zugreifen.
/// Sinnvoll ist es beispielsweise dann,
/// wenn die Bibliothek des Drittanbieters
/// spezifische Parameterübergaben erwartet.
/// </summary>
class Adapter : Schnittstelle
{
private ExterneKlasse m_ExternesObjekt = new ExterneKlasse();
public void Operation()
{
// Hier kann zunächst
// lokale Arbeit erledigt werden,
// bevor die spezielle Implementierung aufgerufen wird.
// Beispielsweise kann es nötig sein,
// zunächst die Parameter zur Übergabe
// an die Operation vorzubereiten.
Console.WriteLine("Parameter werden zur Übergabe vorbereitet und übergeben...");
// Jetzt rufen wir die Operation der externen Implementierung auf.
m_ExternesObjekt.OperationsImplementierung();
}
}
/// <summary>
/// Diese Klasse birgt die externe Funktionalität
/// (z.B. Bibliothek eines Fremdherstellers).
/// </summary>
class ExterneKlasse
{
public void OperationsImplementierung()
{
Console.WriteLine("Operation wird ausgeführt...");
}
}
}
Webverweise
[Bearbeiten]Wikibooks: Adapter
Wikipedia: Adapter (Entwurfsmuster)