【发布时间】:2020-05-08 23:58:59
【问题描述】:
我编写了一个客户端应用程序:
- 会话管理数据类型和方法(
createSession()、connect()、disconnect()等...) - 用于操作由服务器处理的对象的域特定语言方法(
createVM()、startVM()等...) - 本地数据准备(
formatDataForVmTypeA()、extractValueFromResponse()等...)
我的问题是它都在一个类中:OldStyleClient
A.一个文件的代码太多 - 我很难找到东西,即使我在那里写了所有东西 B. 我想将一些代码提升到它自己的对象中,这样我就可以在 Client 的封装部分上做一些 OO 的事情。
在我疯狂的想象中,我希望能够做这样的事情:
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' 对象?
另外,我要解决的问题的正确名称是什么(以便我更好地寻找解决方案)?
【问题讨论】:
-
您可以为 ClientDSL 中的所有方法创建一个接口,在 ClientDSL 中实现它们,然后在您的 ClientSession 类中您也实现该接口,但对于所有这些方法,您只需使其调用 ClientDSL 的方法
-
那么,如果我添加一个新的 DSL 方法,我是否需要在每个实现该接口的类中添加一个具有相同签名的存根,还是只更新我的接口(那个类)?
标签: java oop inheritance multiple-inheritance object-oriented-analysis