实现ISorter接口的类如何在方法中返回ISortStats接口?
接口作为返回类型的运作原理
核心逻辑:多态与面向接口编程
接口本身无法直接实例化,但它可以作为方法的返回类型,这是面向对象多态特性的典型应用:
- 当方法声明返回
ISortStats时,实际返回的是实现了该接口的具体类对象 - 调用方只需要基于
ISortStats定义的方法/属性处理结果,无需关心背后具体是哪个实现类——这就是依赖倒置原则的核心:依赖抽象而非具体实现
ISorter实现类返回ISortStats的可行性
完全可行,运作逻辑如下:
- 你需要先定义一个实现ISortStats接口的具体类(比如命名为
SortStatsImpl),在这个类里实现接口要求的所有统计项(如比较次数、交换次数、排序耗时等) - 在实现
ISorter的排序类(比如BubbleSorter、MergeSorter)的sort方法中,执行排序逻辑的同时收集统计数据,随后创建SortStatsImpl的实例并填充数据 - 由于
SortStatsImpl实现了ISortStats,它可以自动向上转型为ISortStats类型返回,完全符合sort方法的返回类型要求
这种设计的优势
- 解耦:排序算法的实现与统计数据的结构相互独立,后续若要新增统计维度,只需修改
ISortStats的实现类,无需改动排序算法的代码 - 统一标准:所有排序算法返回的统计结果都遵循
ISortStats的规范,你在做算法对比时,可以用统一逻辑读取、分析不同算法的统计数据,提升效率
内容的提问来源于stack exchange,提问作者HelloSam3567
相关产品推荐
相关产品推荐

