Синглтон Java с наследованием

У меня есть набор одноэлементных классов, и я хочу избежать шаблонного кода. Вот что у меня сейчас:

public class Mammal {
    protected Mammal() {}
}

public class Cat extends Mammal {
    static protected Cat instance = null;
    static public Cat getInstance() {
        if (null == instance) {
            instance = new Cat();
        }
        return instance;
    }

    private Cat() {
        // something cat-specific
    }
}

Это работает, и в этом нет ничего плохого, за исключением того, что у меня есть много подклассов Mammal , которые должны копировать метод getInstance () . Если возможно, я бы предпочел что-то вроде этого:

public class Mammal {
    protected Mammal() {}

    static protected Mammal instance = null;

    static public Mammal getInstance() {
        if (null == instance) {
            instance = new Mammal();
        }
        return instance;
    }
}

public class Cat extends Mammal {
    private Cat() {
        // something cat-specific
    }
}

Как мне это сделать?

8
задан QuantumMechanic 4 May 2012 в 04:14
поделиться