Ich habe eine Schnittstelle ForumApi in der Klasse ForumService. Ich benutze Retrofit und Rxjava hier. Normalerweise für Retrofit, implementieren wir eine Schnittstelle, aber in der unten genannten Code sehe ich die Schnittstelle innerhalb der Klasse. Gibt es einen bestimmten Grund dafür?Warum brauchen wir eine Schnittstelle, die in der Klasse deklariert wird? Haben wir dadurch einen Vorteil?
public class ForumService {
public interface ForumApi {
@GET("/posts")
public Observable<List<Post>>
getPosts();
@GET("/posts/{id}")
public Observable<Post>
getPost(@Path("id") int postId);
@GET("/comments")
public Observable<List<Comment>>
getComments(@Query("postId") int postId);
@POST("/posts")
public Observable<Post>
postPost(Post post);
}
}
Ich muss hier nicht zustimmen. Wenn die Schnittstelle "A" für die spezifische Klasse "B" vorgesehen ist, aber "A" für die Vernetzung und "B" für die Geschäftslogik, sollten sie definitiv nicht in derselben Datei deklariert werden. Ich würde sogar nicht im selben Paket sagen. – Vasiliy
@Vasiliy danke, dass du einen Schritt weiter gegangen bist, aber mir fällt kein Anwendungsfall ein, wie du ihn beschrieben hast. Ein Beispiel wäre erwünscht! – alfasin
Ich bin nicht sicher, was meinst du mit "Use-Case". IMHO Jede Klasse, die Geschäftsregeln und netzwerkbezogene Regeln kombiniert, verletzt das Prinzip der einfachen Verantwortlichkeit und sollte refaktorisiert werden. Vorzugsweise in verschiedene Pakete. – Vasiliy