2017-01-12 2 views
0

Dies ist eine Frage zum Code-Design.API-Methoden abrufen - Klasse oder Modul

Ich habe eine Reihe von Methoden, die API-Aufrufe zum Abrufen der Daten, die Anwendung für die Ausführung seiner Aufgabe verbrauchen würde. Diese Methoden benötigen dieselben 2-3 variablen Eingaben, um die Daten zu holen, die sie benötigen. Ich möchte diese Methoden in eine Klasse oder ein Modul einschließen, aber ich bin nicht sicher, was ich verwenden soll. Die Verwendung einer Klasse fühlt sich für mich merkwürdig an, da ich gerade diese Methoden verwende, um Daten mit der API zu lesen.

Irgendwelche Vorschläge? Die folgenden Beispielmethoden wurden als Referenz hinzugefügt. Sollte ich nur Module für solche Methoden verwenden oder sie in eine Klasse einbinden? Wenn ich die Klasse I verwende, muss ich möglicherweise nicht für jede Methode ähnliche Parameter übergeben.

module Client 
    module Features 
     def get_feature_set(client, version, locale) 
      //code 
     end 
     def get_feature_detail(feature_id, client, version, locale) 
      //code 
     end 
     def get_locales(client) 
      //code 
     end 
    end 
end 
+0

Ihre Beschreibung ist zu vage beraten auf. Können Sie ein Beispiel für die Methoden hinzufügen, die Sie bisher hatten und wie Sie sie aufrufen? –

+0

Der Beispielcode wurde hinzugefügt. @AlexWayne, tut mir leid. –

Antwort

1

Es scheint, dass jede Methode eine client benötigt. Daher würde ich darüber nachdenken, eine Klasse mit dieser client zu initialisieren. Vielleicht mit einer Schnittstelle wie folgt aus:

Statt Client::Feature.get_locales(client):

Client.new(client).locales 

Statt Client::Feature.get_feature_set(client, version, locale):

Client.new(client).feature_set(locale, version) 

Statt Client::Feature.get_feature_detail(feature_id, client, version, locale):

Client.new(client).feature_detail(feature_id, locale, version) 
# or 
Client.new(client).feature_set(locale, version).details(feature_id) 
0

Sie können ein Modul für gemeinsamen Code mit gängigen Methoden definieren. Und rufen Sie "include" aus Ihrer Klasse auf, um die allgemeinen Methoden in Ihren spezifischen Klassen einzuschließen. (Mixins)

Verwandte Themen