我在class forumservice中有一个接口论坛。我在此处使用Retrofit和Rxjava。通常,我们要进行改进,但是在以下代码中,我在类中看到了界面。是否有具体的原因?
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);
}
}
如果特定类/接口B
使用接口A
,则通过在B
中声明A
将它们绑在一起是有意义的。
另一个这样的示例是Map.Entry
接口内声明的接口CC_5(例如,您不应该在List
内使用Map.Entry
(。
imho,这是一个非最佳设计决策。
内部接口有一些有效的用例。例如:在实施可观察的设计模式时,如果观察者和可观察者之间存在一对一的对应关系,则将观察者的界面(侦听器(声明为内部接口。
是一种广泛的做法。 。在您的代码中并非如此。
我不知道ForumService
做什么,但是我想它包含一些与论坛管理相关的业务逻辑。如果是这种情况,那么,根据单个责任原则,在同一类中不应声明ForumService
和ForumApi
。
我还会说不应该在同一包装中定义它们。所有与网络相关的类都应位于仅包含网络内容的单独软件包中。
此外,在这种情况下,接口本身包含实现细节 - 改造的注释。通过将该接口放置在ForumService
中,该设计有效地使ForumService
取决于翻新。这并不重要,但仍然有效地重构该界面从班级中重构。