используя enum для «перечисления» одноэлементного подкласса - PullRequest
0 голосов
/ 10 мая 2019

Хорошо, поэтому я начал проект и хочу представлять авантюристов («Авантюристы» по-французски), каждый из которых уникален и у каждого есть специальное действие.

Я придумал это:

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() {}
}

Он работает, как и ожидалось, но поскольку это не личный проект, я хочу знать, является ли это действительным дизайном.И если нет, если есть хорошая альтернатива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...