Zum Inhalt springen

Arbeiten mit .NET: Entwurfsmuster/ Structural Patterns/ Adapter

Aus Wikibooks

Implementierung

[Bearbeiten]

C#-Code:  

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)