懒惰初始化和回调的困境

时间:2012-12-06 15:50:24

标签: java interface callback lazy-loading abstract-class

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

然后,因为它的解决方案可以实现避免抽象类并使用单例和接口(进行回调),将它们(接口)作为参数传递..但这有点难看,因为禁止美观的IDE有助于实现抽象方法。

我想知道这种不可能的混合物是否还有其他选择。

选项抽象类(禁止单/多重)

class abstract Machine
 {                 
     abstract hardwareCallBack();             
     //..
     //Here I can't put a constructor for singleton because it's abstract 
 } 

选项单件(它实际上是一个多圈) 带接口

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;            
    }
 //...
}

这是一个相关的问题 How can I implement an abstract singleton class in Java?

0 个答案:

没有答案