Kann mir jemand das Konzept des steckbaren Adapters mit gutem Beispiel erklären?Kann mir jemand das Konzept des steckbaren Adapters mit gutem Beispiel erklären?
Antwort
Sie können this article über Adapter/steckbare Muster lesen:
Inhaltsverzeichnis in diesem Artikel:
* 1 Design Patterns
* 2 Intent of Adapter
* 3 Motivation
* 4 Structure
* 5 Applicability
* 6 Consequences
* 7 Implementation
o 7.1 Known Uses and Sample Code
o 7.2 Related Patterns
* 8 Conclusions
* 9 Appendix
o 9.1 References
o 9.2 Glossary
Zitat:
Smalltalk führte das Konzept eines „steckbare Adapter " Klassen mit integrierter Schnittstelle Anpassung zu beschreiben. Dieses interessante Konzept ermöglicht die Einführung von Klassen in bestehende Systeme, die möglicherweise unterschiedliche Schnittstellen zur Klasse erwarten. Diese Technik kann Klassenwiederverwendung über Module und sogar Projekte fördern. Hier
ist ein kleines Beispiel:
Wir haben zwei Klassen - Foo & Boo, die eine Schnur gibt zu trösten. Die Adapterklasse kann Methoden aus beiden Klassen anpassen, um die vom Client benötigte Schnittstelle (SaySomething) bereitzustellen. Beachten Sie, dass es keine Abhängigkeit vom Schnittstellennamen gibt - wir können SayHey- und Bark-Methoden problemlos anpassen.
class Foo
{
public static void SayHey() { Console.WriteLine("Hey!"); }
}
class Boo
{
public static void Bark() { Console.WriteLine("Woof!"); }
}
class Adapter
{
public Action SaySomething { get; private set;} // "pluggable" adapter
public Adapter(Action saySomethingAction)
{
SaySomething = saySomethingAction;
}
}
class Program
{
static void Main(string[] args)
{
(new Adapter(Foo.SayHey)).SaySomething();
(new Adapter(Boo.Bark)).SaySomething();
}
}
Von dem, was ich von einem schnellen Lesen von Google Ergebnissen verstanden, ein steckbare Adapter ist ein Adapter, der gegen einen bestimmten adaptierten nicht hart codiert. Auf der Oberfläche (die eigene Schnittstelle des Adapters) ist es egal, aber es kann sich an verschiedene Anpassungen mit verschiedenen Schnittstellen anpassen. Ich fand this thread ziemlich erklärend:
Grundsätzlich ermöglicht es Ihnen, in einem Adapter zu setzen, wenn das adaptierte (Empfänger) Protokoll zum Zeitpunkt der Kompilierung nicht bekannt ist durch Reflexion verwendet wird. Wenn Sie die Adapterinstanz erstellen, geben Sie ihr den Namen der anzurufenden Methode des Adaptees, , sowie alle Metadaten, die zum Übersetzen von Eingabetypen erforderlich sind, . Wenn der Adapter einen Methodenaufruf der Zielschnittstelle empfängt, verwendet er die Reflektion , um die auf dem Adaptee angegebene entsprechende Methode aufzurufen.
Und this:
Die Hauptverantwortung des Viewers ist ein Widget aus einer Domäne Modell zu füllen, ohne irgendwelche Annahmen über Domain. Der JFace-Viewer verwendet den Mechanismus Delegierende Objekte in Pluggable Adapter Pattern, um die obige Anforderung zu implementieren.
Betrachten Sie es als ein Facehugger von Alien; wenn es ein Gesicht umarmt, sieht man nur den schleimigen Rücken des Gesichtshüters. Sie können es mit einem Stock stoßen und versuchen, seine Arme (die Adapterschnittstelle) abzubrechen. Aber im Grunde kann es das Gesicht jedes Menschen (der Angepasste) umarmen, unabhängig von den Gesichtsmerkmalen. Vielleicht treibe ich es ein bisschen, aber, hey, ich liebe Alien.
Große Analogie! :) – cschol
Ein Unterscheidungsmerkmal des Pluggable Adapters ist, dass die vom Client aufgerufene Methode und die in der Schnittstelle vorhandene Methode unterschiedlich sein können.
interface Ilegacy
{
float calculate(int a, int b);
}
class Legacy : Ilegacy
{
public float calculate(int a, int b)
{
return a * b;
}
}
class Adapter
{
public Func<int, int, float> legacyCalculator;
public Adapter()
{
this.legacyCalculator = new Legacy().calculate;
}
}
class Client
{
static void Main()
{
float result = new Adapter().legacyCalculator(5, 6);
}
}
Dies kann in der Regel mit der Verwendung von Delegaten Func oder Aktion in C#
- 1. Kann mir jemand das erklären?
- 2. Warum ist Autowiring erforderlich? kann mir jemand das konzept des autowirings erklären?
- 3. Kann mir jemand erklären, wie das funktioniert?
- 4. Callbacks & params.require - Kann mir das jemand erklären?
- 5. Kann mir jemand erklären docker.sock
- 6. Kann jemand mir erklären, wie es? Ich
- 7. Kann jemand das erklären?
- 8. Kann mir jemand das Konzept der "Hygiene" erklären (ich bin ein Schema-Programmierer)?
- 9. Kann mir jemand diese Haskell-Funktionen erklären?
- 10. Kann mir jemand ASP.NET-Routing-Syntax erklären?
- 11. Kann mir jemand diesen Fehler erklären?
- 12. Kann mir jemand den folgenden Code erklären?
- 13. Kann mir jemand den Reddit-Exploit des letzten Jahres erklären?
- 14. Kann mir jemand diesen JavaScript-Code erklären?
- 15. Kann mir jemand erklären, diese `StaleDataException`
- 16. Kann mir jemand den folgenden Code erklären?
- 17. Kann mir bitte jemand die Ausgabe des Programms erklären?
- 18. Kann mir jemand diese Fehler erklären?
- 19. Kann mir jemand diesen Decorator Code erklären?
- 20. Kann mir jemand C++ - Ausnahme-Spezifikationen erklären?
- 21. UML: Kann mir jemand das Diagramm der Fabrikmethode erklären?
- 22. Kann mir jemand erklären, wie das HABTM-Prinzip funktioniert?
- 23. Kann mir jemand dieses reaktive native Code-Snippet erklären?
- 24. Kann mir jemand erklären, wie man Bild mit WPF hinzufügt?
- 25. Kann mir jemand den Ablauf dieser JavaScript-Funktion erklären? (Closure Konzept)
- 26. Kann mir jemand diesen Code mit der Funktion .bind() erklären?
- 27. Kann mir jemand 1NF, 2NF, 3NF, BCNF Regeln mit einem richtigen Beispiel erklären?
- 28. Kann jemand Namespace in Javascript mit einem Beispiel erklären?
- 29. Kann mir jemand diese Art von Rekursion erklären?
- 30. kann mir bitte jemand erklären @MapsId im Ruhezustand?
ich diesen Artikel beziehen tat acheived. Ich denke du suchst das auch mit Google. Aber es erklärt Pluggable Adapter nicht klar. Es bezieht sich auf GoF-Buch, das ich gelesen habe. –
Der Link zum Artikel ist jetzt unterbrochen. – miguelbgouveia