我在類ForumService中有一個接口ForumApi。我在這裏使用Retrofit和Rxjava。通常對於Retrofit,我們實現了一個接口,但是在下面的代碼中,我看到了class內部的接口。有什麼特別的原因嗎?爲什麼我們需要在類內聲明一個接口?我們這樣做有什麼優勢嗎?
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);
}
}
我必須在這裏不同意。如果接口'A'旨在被特定類'B'使用,但與網絡相關的'A'和'B'包含業務邏輯,那麼它們絕對不應該在同一個文件中聲明。我甚至會說不在同一個包裏。 – Vasiliy
@Vasiliy感謝您進一步採取措施,但我無法想象您描述的用例。一個例子,將不勝感激! – alfasin
我不確定「用例」是什麼意思。恕我直言,任何將商業規則和網絡相關規則結合起來的類違反單一責任原則,應該重構。優選分成不同的包裝。 – Vasiliy