为什么我们需要在课堂内声明一个接口?这样做是否有任何优势



我在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做什么,但是我想它包含一些与论坛管理相关的业务逻辑。如果是这种情况,那么,根据单个责任原则,在同一类中不应声明ForumServiceForumApi

我还会说不应该在同一包装中定义它们。所有与网络相关的类都应位于仅包含网络内容的单独软件包中。

此外,在这种情况下,接口本身包含实现细节 - 改造的注释。通过将该接口放置在ForumService中,该设计有效地使ForumService取决于翻新。这并不重要,但仍然有效地重构该界面从班级中重构。

最新更新