Java 接口(interface)\抽象类限制

标签 java android interface abstract-class

今天,我们的团队遇到了问题。

有一个类AClass,它实现接口(interface)AInterface。到目前为止,我们需要引入一个新实体(BClass),它仅使用接口(interface) A 的一部分。

enter image description here

我们想到的第一件事 - 将接口(interface) AInterface 拆分为 2 个组件(组合)

enter image description here 问题在于逻辑AClass->AInterface - 是一个模型舞会模式MVC。而且我们极不希望将其切割成几个界面。

我们知道Java提供了一种继承机制来扩展类或接口(interface)。

但是有什么办法可以限制实现吗?或者也许以另一种方式存在?

注意:我们不想使用 UnsupportedMethodException。我们的目标 - 干净的 API。

更新:

下一个解决方案 - 不适合我们。

enter image description here

目标:

enter image description here

最佳答案

将受限子集放入一个接口(interface)中,并让更大的接口(interface)对其进行扩展。然后让 A 实现子(较大)接口(interface),B 实现父(较小)接口(interface)。那么A和B都实现了较小的接口(interface),而只有A实现了较大的接口(interface)。尽可能使用较小的界面进行编码。

public interface AInterface {
    void add();
    void remove();
}

public interface ASubInterface extends AInterface {
    void invalidate();
    void move();
}

public class AClass implements ASubInterface { /* 4 methods */ }
public class BClass implements AInterface { /* 2 methods */ }

关于Java 接口(interface)\抽象类限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24194188/

相关文章:

java - 获取下一个字典字符

java - 从复选框中检索值

android - Google Play 服务位置 API 和 Google map 地理编码 API 之间有什么区别

android - 如果没有可用连接,则创建 Socket 实例会在随机时间内阻塞线程

java - 位图内存不足问题

c# - 使用派生的属性实现接口(interface)

java - 比较目录以检查一个目录是否是另一个目录的子目录

Java 比较两个相同大小的字符串列表,其中顺序很重要

typescript 警告 "Use an interface instead of a type literal"

c++ - 单元测试 : coding to interfaces?