package com.example.model; public enum Race { Human { @Override public Factory getFactory() { return humanFactory; } @Override public int getCost() { return 110; } @Override public int getLeaderCost() { return 220; } }, Orc { @Override public Factory getFactory() { return orcFactory; } @Override public int getCost() { return 150; } @Override public int getLeaderCost() { return 300; } } ; static Factory humanFactory = new HumanFactory(); static Factory orcFactory = new OrcFactory(); public abstract Factory getFactory(); public abstract int getCost(); public abstract int getLeaderCost(); }