java - 模块化 Java 接口(interface)的正确用法是什么?

标签 java inheritance interface module

我正在尝试模块化遗留代码,在这样做时我遇到了这个问题:

我有两个类属于同一个模块 - 以及许多其他类 - 并且每个类都有一个或多个在其他地方使用的公共(public)方法。我想为该模块创建一个通用接口(interface),但我不确定如何去做。如果我为模块创建一个接口(interface),我最终将不得不在使用该接口(interface)的所有类中实现空白方法,这听起来不太好。但是,如果我创建可由模块内的特定类使用的多个接口(interface),我只能将它们全部组合到一个仅用于类型引用的接口(interface)中:

/-------------\     /-------------\
| Interface A |     | Interface B |
\-------------/     \-------------/
/-------------\     /-------------\
|   Class A   |     |   Class B   |
\-------------/     \-------------/

/-------------\     /-------------\
| Interface A |     | Interface B |
\-------------/     \-------------/
            ^         ^
            |         |
        /------------------\
        | Module Interface |
        \------------------/

是否有任何设计模式可以帮助我解决此问题,或者是否将构成特定模块的接口(interface)组合到子接口(interface)中以表示模块类型,这是实现此目的的正确方法?

最佳答案

我不确定我是否真的理解你的问题,但你可以通过继承将接口(interface)组合成一个接口(interface)。即接口(interface)支持多重继承。

适配器模式可能适合您:http://en.wikipedia.org/wiki/Adapter_pattern

也尽量不要为了制作接口(interface)而制作接口(interface)。 Java 有着悠久的历史,试图为永远不会有其他实现的东西创建接口(interface)。除非您制作 API 时考虑 KISS。

关于java - 模块化 Java 接口(interface)的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10190320/

相关文章:

c# - 在部分类中实现接口(interface)

java - 多线程捆绑和服务实例

javascript - 带有实例变量的简单 JavaScript 继承

java - Spring将ProtobufHttpMessageConverter添加到没有xml配置的 Controller

c++ - C++ 中的继承、范围和模板构造函数

java - 如何制作继承的静态对象

c# - 以编程方式创建虚拟网络接口(interface)

java - 在我的例子中,很难确定单一方法接口(interface)是否真的是一个好主意?

java - 使用 HTTPUrlConnection 时出现 StackOverflowError

java - 在测试主题类中调用时,Mockbean 不会抛出错误