Java 如何通过继承强制单例模式

Java 如何通过继承强制单例模式,java,inheritance,singleton,Java,Inheritance,Singleton,我有一个Java程序,其中有扩展工具的类。例如,PaintTool、EraseTool和FillTool。我计划只使用工具中定义的方法,所以我不必担心转换特定的子类 public abstract class Tool { Tool singletonInstance; public abstract void primaryAction(String arg); public abstract void secondaryAction(String arg);

我有一个Java程序,其中有扩展工具的类。例如,PaintTool、EraseTool和FillTool。我计划只使用工具中定义的方法,所以我不必担心转换特定的子类

public abstract class Tool 
{
    Tool singletonInstance;

    public abstract void primaryAction(String arg);

    public abstract void secondaryAction(String arg);

    public static Tool getSingleton()
    {
        //???
    }
}
我的问题是getSingleton()。我可以在这里输入什么来满足不同工具(其中包含任意进程)的构造函数。我的理解是,静态方法不能抽象,所以必须在工具中实现


需要单例方法,以便保存工具的默认设置。如果我误解了Java中的单例,或者更好的结构化方法更为传统/高效,请告诉我。

静态方法不被继承是有原因的。如果调用
Tool.getSingleton()
,您希望得到哪一个具体的子类实现?听起来更像是想要一个工厂模式,当一个实例不存在时,它可以用来生成一个新实例,但当继承静态方法时(如果您想要的话)返回先前创建的实例(除了让Java变得迟钝的接口之外),只是它不太可能是您真正想要的。/总是避免(可变)单例。@mad程序员工厂实现肯定更符合我的需要,谢谢!