我正在用 Java 开发一个服务器应用程序。服务器需要两种类型的服务器类。这些类有一些共同的方法,这些方法中的代码是完全相同的。因此,我创建了一个包含所有共享代码的抽象父类(super class),并且两个类都继承了它。但是,代码的某些部分需要通过子类来精确化。我的意思是父类(super class)“依赖”子类方法。
这是我的意思的一个纯化示例:
public abstract class AbstractServer
{
public void loadConfig(String configPath)
{
//Load the configuration file.
//This code is exactly the same for subclasses.
}
public void startRMI(int port)
{
//Create an empty RMI registry.
//This part also need to be identical.
//Here' where the superclass "rely" on subclasses.
fillRegistry(); //Call the method overwritten by subclasses.
}
/**
Bind remote objects in the RMI registry
*/
protected abstract void fillRegistry(); //This method will be overriten by subclasses.
}
我觉得这样做真的很糟糕,但我找不到另一种更干净的方法来做到这一点。
所以,我想要的是一些关于如何做得更好的建议。
谢谢,很抱歉我的英语不好。
最佳答案
你的方法很好。坚持下去,伙计。
我感觉到你理解它的“哲学需要”。只要基类是抽象的,基类“依赖”子类就可以。它知道此时必须注册一些东西,但对于到底要注册什么,它没有任何线索。因此,高级过程在基类中进行编码,并带有可以由派生类插入的“漏洞”。高层流程和“洞”本身的位置是有值(value)的,这证明了基类的实现是合理的。派生类只是遵循“差异编码”的基本 OO 原则并堵塞“漏洞”。
关于java - 在两个类之间共享代码(使用抽象操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208454/