使用枚举“列出”单例子类

时间:2019-05-10 14:42:02

标签: java design-patterns

好吧,所以我开始一个项目,我想代表冒险家(法语中的“冒险家”),每个冒险家都是独特的,每个人都有其特殊的动作。

我想出了这个:

public abstract class Aventurier {
    public abstract void specialAction();
}
public enum AvanturierE {

    NAVIGATEUR("Navigateur",Navigateur.getNavigateur()),
    PILOTE("Pilote",Pilote.getPilote()),
    INGENIEUR("Ingenieur",Ingenieur.getIngenieur());

    AvanturierE(String nom, Aventurier aventurier) {
        this.aventurier = aventurier;
        this.nom = nom;
    }

    Aventurier aventurier;
    String nom;

    public Aventurier getAventurier() {
        return aventurier;
    }
}
public class Navigateur extends Aventurier {

    private Navigateur() {}

    static Navigateur navigateur = new Navigateur();

    public static Navigateur getNavigateur() {
        return navigateur;
    }

    @Override
    public void specialAction() {}
}
public class Pilote extends Aventurier {

    private Pilote() {}

    static Pilote pilote = new Pilote();

    public static Pilote getPilote() {
        return pilote;
    }

    @Override
    public void specialAction() {}
}
public class Ingenieur extends Aventurier {

    private Ingenieur() {
    };

    static Ingenieur ingenieur = new Ingenieur();

    public static Ingenieur getIngenieur() {
        return ingenieur;
    }

    @Override
    public void specialAction() {}
}

它可以按预期工作,但由于它不是个人项目,我想知道它是否是有效的设计。如果没有的话,还有一个很好的选择。

0 个答案:

没有答案