Java:如何将几个类的方法链接到一个对象中?

Java:如何将几个类的方法链接到一个对象中?,java,oop,inheritance,multiple-inheritance,object-oriented-analysis,Java,Oop,Inheritance,Multiple Inheritance,Object Oriented Analysis,我编写了一个客户端应用程序,它具有: 会话管理数据类型和方法(createSession(),connect(),disconnect(),等等) 用于操作服务器处理的对象的特定于域的语言方法(createVM(),startVM(),等等) 本地数据准备(formatDataForVmTypeA(),extractValueFromResponse(),等等) 我的问题是,它们都在一个类中:OldStyleClient 答:一个文件的代码太多了——我很难找到东西,尽管我在那里写了所有的东西

我编写了一个客户端应用程序,它具有:

  • 会话管理数据类型和方法(
    createSession()
    connect()
    disconnect()
    ,等等)
  • 用于操作服务器处理的对象的特定于域的语言方法(
    createVM()
    startVM()
    ,等等)
  • 本地数据准备(
    formatDataForVmTypeA()
    extractValueFromResponse()
    ,等等)
我的问题是,它们都在一个类中:OldStyleClient

答:一个文件的代码太多了——我很难找到东西,尽管我在那里写了所有的东西 我想把一些代码提升到它自己的对象中,这样我就可以在客户端的封装部分上做一些面向对象的事情

在我疯狂的想象中,我希望能够做这样的事情:

import ClientSession;  // Backbone of the client data and methods (session handling, etc...)
import ClientDSL;      // contains doThis(); method
import ClientChecks;   // contains checkRC(); method

ClientSession currentSession = new ClientSession();
currentSession.doThis();
currentSession.checkRC();
我听说我可以使用接口来实现多对一继承,但我认为接口不是 我的最佳选择:他们的主要目标似乎是为程序员编写需要与另一个类通信的类时创建一些代码级契约,而多重继承只是一个副作用

有没有一种方法可以告诉Java“我希望‘ClientDSL’中的方法适用于‘ClientSession’对象?”


另外,我试图解决的问题的正确名称是什么(以便我更好地搜索解决方案)?

您可以使用接口(这样您就可以实现多个!)和(Java 8以后的版本),这样您就不必在实现它们的类中实现方法。

您可以使用接口(这样您就可以实现多个!)和(Java8以后的版本)因此,您不必在实现它们的类中实现方法。

您可以为ClientDSL中的所有方法创建一个接口,在ClientDSL中实现它们,然后在ClientSession类中也实现该接口,但对于所有这些方法,只要让它调用ClientDSL的方法,如果我添加一个新的DSL方法,我是否需要在实现接口的每个类中添加具有相同签名的存根,还是只更新我的接口(那一个类)?您可以为ClientDSL中的所有方法创建一个接口,在ClientDSL中实现它们,然后在您的ClientSession类中也实现该接口,但是对于所有这些方法,您只需让它调用ClientDSL的方法。如果我添加一个新的DSL方法,我是否需要在每个实现I的类中添加一个具有相同签名的存根接口或只是更新我的接口(那一个类)?嗨,我试着阅读了你提到的概念,但没能得到我想要的。想分享一些代码给我一个方向吗?不需要编译,就足够了,这样我就知道放什么了,谢谢!)您好,我试着阅读了您提到的概念,但没有得到我想要的。想分享一些代码给我一个方向吗?不需要编译,就足够了,这样我就知道该放什么了,谢谢!)