首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:将“实现”拆分为two+类

Java:将“实现”拆分为two+类
EN

Stack Overflow用户
提问于 2016-11-13 02:17:39
回答 2查看 93关注 0票数 0

我已经为我正在使用的Java应用程序提供了一个插件架构。

所有的例子都表明:

代码语言:javascript
复制
   public class SpecialName implements BaseExtenderClass, ClassB, ClassC {
   //Stuff
   }

在"SpecialName“是一个名称,您必须命名您的类,以使它被识别为一个插件,而BaseExtenderClass,ClassB,ClassC都是不同的API功能,在这个类中被扩展来执行特定的操作。每个人都有自己的方法,必须加以实现。

我想知道的是,在Java中是否有一种方法,我可以将ClassB和ClassC放在与BaseExtenderClass和SpecialName分开的文件中,并且仍然让它表现得像上面列出的原始代码一样。

代码将更加整洁和更有组织,我可以这样做,因为我正在编写的插件实际上将扩展一个良好的6-8个可用的api接口。

如果没有,我可以有一个庞大的文件..。只是感觉不像是做事情的正确方式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-13 02:38:28

您是否试图拆分接口定义或它们的实现代码?

我假设您是说您不想将所有3个接口的实现代码放在同一个类中,而是需要分离成2个或更多的文件(类),因为您对潜在的大小进行了注释。

如果是这样的话(我假设您有很好的理由这么做),那么您应该能够创建一个实现ClassB和ClassC的中间类,然后继承该类。

就像这样..。

代码语言:javascript
复制
public class TmpClass implements ClassB, ClassC {
  //put implementation for these 2 interfaces here
}

public class SpecialName extends TmpClass implements BaseExtenderClass {
  //add implementation for BaseExtenderClass interface here
}
票数 1
EN

Stack Overflow用户

发布于 2016-11-13 02:48:19

你的例子有点混乱。我觉得应该是:

代码语言:javascript
复制
public class SpecialName extends BaseExtenderClass
   implements InterfaceB, InterfaceC {

重点是:

  • 一个类可以extend (最多!)另一个班。
  • 一个类可以implement多个接口。
  • 类不能implement类。

那么,如何处理具有复杂接口层次结构的情况,并避免重复接口方法的实现代码?

你能做的最好的事情是结合以下几点:

  • 将接口图部分镜像为基本树,在不可能继承的情况下复制方法。 公共类MyClass扩展BaseAB实现InterfaceA,InterfaceB { //特定方法为MyClass }公共类BaseAB扩展BaseA实现InterfaceA,InterfaceB { //基方法用于InterfaceB }公共类BaseA实现InterfaceA { //基类InterfaceA }
  • 将通用功能实现为组件,并使主类成为包装器。 公共类MyClass实现InterfaceA,InterfaceB {私有的InterfaceA a=新的MyA(.);私有的InterfaceB b=新的MyB(.);公共的methodInA(.){a.methodInA(.);};//多个适配器方法,如上所述// MyClass }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40569876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档