Vala:如何引用摘要 class' subclass?

Vala: How to refer an abstract class' subclass?

考虑以下几点:

abstract class Singleton : Object {
    private static Singleton _instance = null;
    public static Singleton instance() {
        if (instance == null) {
            instance = // constructor call goes here
        }
        return instance;
    }
}

class Foo : Singleton {
    Foo() {}
}

var test = Foo.instance();

我想抽象地实现一个单例class。我的问题是:如何从 Singleton.instance()?

引用 subclass 构造函数

继承和单例模式不能很好地结合:

C++ Singleton class - inheritance good practice

你为什么不直接让你的 Foo class 静态(让所有成员都静态):

public class Foo {
    // Static constructor
    public static Foo() {}
    // Static methods
    public static void bar () {}
    // Static attributes, etc.
}

这通常也有效。如果您的 "singleton" 有一个昂贵的构造并且您想避免它总是被构造,它就不会很好地工作。