2016-03-31 15 views
0

Ich muss einige Dienste einrichten, die sowohl mit Amazon S3 als auch mit Riak CS kommunizieren.Klassenstruktur für die Client-Bibliothek

Sie werden die gleichen Operationen, z.B. Bilder abrufen

Aufgrund der Rückgabe verschiedener Objekte, im Fall von S3 ein S3Object. Ist der richtige Weg, um dies ohne eine gemeinsame Schnittstelle für jede eine andere Klasse zu haben?

Ich habe darüber nachgedacht, wie man eine gemeinsame Schnittstelle auf beide anwendet, aber der Rückgabetyp der Methoden verursacht einige Probleme, weil sie anders sind. Ich könnte damit einfach falsch liegen und sollte sie wahrscheinlich trennen, aber ich hoffe, hier eine Klarstellung zu bekommen.

Vielen Dank!

Antwort

1

In der Regel führen Sie dies durch, indem Sie die Antworten der verschiedenen externen Dienste mit Ihren eigenen Klassen umschließen, die über eine gemeinsame Schnittstelle verfügen. Sie wickeln auch die Dienste selbst ein. Wenn Sie also Ihre Service-Wrapper aufrufen, geben sie alle Ihre umschlossenen Datenklassen zurück. Sie haben dann alle Verweise auf den externen Dienst in einem Paket isoliert. Dies macht es auch einfach, Dienste hinzuzufügen oder zu entfernen.

0

Eine genaue Antwort auf Ihre Frage würde erfordern, dass Sie die Sprache, die Sie verwenden, und/oder die Plattform kennen. Eric in seiner obigen Antwort ist richtig, dass das Umwickeln der Daten in einer eigenen Klasse eine Möglichkeit ist, damit umzugehen. Abhängig von der Sprache variieren jedoch die Details der endgültigen Implementierung und der Arbeitsaufwand beim Hinzufügen eines möglichen Rückgabewerttyps variiert ebenfalls. In Java zum Beispiel wäre dies eine Möglichkeit, einen heterogenen Container zurückzugeben. Schauen Sie sich diesen Thread an: Type safe heterogeneous container pattern to store lists of items