Java 延迟初始化和回调的困境

Java 延迟初始化和回调的困境,java,interface,callback,lazy-loading,abstract-class,Java,Interface,Callback,Lazy Loading,Abstract Class,我需要进行延迟初始化,所以我选择了单例/多例模式,但我也需要回调,所以我选择了抽象类,但这是一个矛盾,它不能同时是单例和抽象类 然后,作为解决方案,可以实现它,避免抽象类,并使用singleton和interfacesto进行回调,将接口作为参数传递。。但这有点难看,因为漂亮的IDE有助于实现抽象方法 我想知道对于这种不可能的组合是否还有其他选择 选项抽象类禁止单个/多个选项 class abstract Machine { abstract har

我需要进行延迟初始化,所以我选择了单例/多例模式,但我也需要回调,所以我选择了抽象类,但这是一个矛盾,它不能同时是单例和抽象类

然后,作为解决方案,可以实现它,避免抽象类,并使用singleton和interfacesto进行回调,将接口作为参数传递。。但这有点难看,因为漂亮的IDE有助于实现抽象方法

我想知道对于这种不可能的组合是否还有其他选择

选项抽象类禁止单个/多个选项

class abstract Machine
 {                 
     abstract hardwareCallBack();             
     //..
     //Here I can't put a constructor for singleton because it's abstract 
 } 
选项Singleton它实际上是一个带接口的multiton

这里有一个相关的问题

public class Machine {

    private CallBackIface callBack; //interface including hardwareCallBack();
    private static final Map<String, Machine> instances 
                                               = new HashMap<String, Machine>();

    private Machine(CallBackIface callback0) 
    {
         callBack=callback0;
    }

    public static Machine getMachine(String name, CallBackIface callback0) 
    {

           Machine instance = instances.get(name);

            if (instance == null) //plus sync stuff...
             {

                instance = new Machine(callback0);  
                instances.put(name, instance);
             }                 
            return instance;            
    }
 //...
}