You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于TMDB API的电影抽象模块是否违反接口隔离原则(ISP)?

关于BaseMovieRepository是否违反接口隔离原则(ISP)的分析

你的BaseMovieRepository抽象类没有违反ISP,原因如下:

  • 先明确ISP的核心:客户端不应被迫依赖自己不需要的方法,核心是避免"胖接口",也就是接口里混入了调用方用不上的无关方法。
  • 这个抽象类完全符合单一职责原则(SRP):所有方法都围绕「电影数据获取」这一个核心职责,不管是获取不同维度的电影列表(热映、热门、高分、即将上映),还是获取电影图片,都是电影领域内的相关操作,没有混入其他领域(比如剧集)的方法。
  • 从依赖方的角度看,所有依赖这个抽象的客户端(比如电影列表页、电影详情页组件),都是和电影功能强相关的模块,不存在被迫依赖无关方法的情况。比如热映电影页面只需要调用getNowPlaying(),它依赖这个抽象时,不需要去处理自己用不上的其他方法(抽象的实现由具体子类完成,客户端只调用自己需要的方法即可)。

如果未来你把剧集相关的方法(比如getTvPopular())加入这个抽象类,那才会违反ISP——因为电影模块的客户端会被迫依赖自己完全用不上的剧集方法,但目前的设计是没问题的。

附上你的抽象类代码:

abstract class BaseMovieRepository{

  Future<List<Movie>> getNowPlaying();
  Future<List<Movie>> getPopular();
  Future<List<Movie>> getTopRated();
  Future<List<Movie>> getUpcoming();

  Future<List<MovieImage>> getMovieImages({required int movieId});
}

内容的提问来源于stack exchange,提问作者A-E

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:22:07