Ich interagiere mit der Quizlet API
und ich habe debattiert die beste Möglichkeit, um meinen Code zu strukturieren. Die Quizlet-API verfügt über mehrere Funktionen wie die Anzeige von Sets
, Classes
und andere User
Informationen. Ich versuche, APIClients
dafür zu schaffen, aber ich habe gekämpft, um eine bessere Lösung zu finden, um die Klienten zu modellieren oder das beste dieser möglichen Lösungen zu wählen.Subclassing vs Extension vs Inner Class
Lösung 1: erstellen superclass
genannt QuizletManager
und speichern Sie die grundlegenden Informationen wie clientID
, access codes
und zugehörige Informationen, die durch alle Unterklassen nützlich ist. Dann kann ich individuelle subclasses
wie QuizletSet
, QuizletClass
, usw. erstellen, um das Abrufen der Sätze, Klassen und damit verbundenen Informationen zu behandeln. Wenn ich die Daten tatsächlich abrufen muss, würde ich wahrscheinlich nie anrufen QuizletManager
; Ich würde jedoch neue Instanzen der QuizletSet
und verwandten Klassen für die Vernetzung erstellen.
Lösung 2: Neue QuizletManager
Super wieder mit all ihren verwandten Unterklassen. Dieses Mal würde ich jedoch alle meine Subklassen in Bezug auf Sets und all das in der QuizletManager
Klasse instanziieren und Methoden innerhalb von QuizletManager
haben, die die Unterklassen beim Abrufen von Informationen aufrufen. In diesem Fall würde ich immer anrufen und QuizletManager
würde die Unterklassen verwenden, um die Informationen tatsächlich abzurufen.
Lösung 3: erstellen QuizletManager
Klasse und es besser lesbar Verwendung Erweiterungen die Funktionalität des Abrufens Sets
, Classes
usw. Die Erweiterungen würden im Wesentlichen Funktionen enthalten hinzufügen zu machen, die die Funktionalität des Abrufens Sets
und verwandte Informationen hinzufügen .
Lösung 4: In dieser Lösung hätte ich eine Klasse in einer Klasse. Im Wesentlichen würde, ich habe nur so etwas wie dieses:
class QuizletManager {
var clientID: String
// Other related properties important for sets, classes, etc.
class SetClient: APIClient {
// Fetch related info for sets.
}
}
Ahh, ich mag diesen Ansatz. Ich werde sehen, ob es weitere Vorschläge/Empfehlungen gibt und dann werde ich deine Antwort akzeptieren :) – Harish