Есть еще один вариант, о котором вы можете подумать. Если вы видите Команды как Команды, связанные с кучей способностей, таких как, например, способность справляться с нерестом. И способности регистрируются в командах. Таким образом, вы можете работать со своей командой все время и только доказать, что у них есть доступные способности.
Как будет выглядеть этот дизайн регистрации (например, внедрение зависимости или что-то еще) - это совсем другое.
В играх всегда случается, что команды, игроки или другие структуры данных со временем будут развиваться, поэтому удобнее собирать вещи не в очень статичной иерархии классов, чтобы быть более гибкими. Это приведет к менее сложной модели, которая в конечном итоге приведет к меньшему количеству боли.
К вашему вопросу. Я бы предпочел первый, если я ограничен этими двумя вариантами, потому что я не хочу иметь класс, который содержит тонны методов, которые мне на самом деле не нужны в каждом подклассе. И, к счастью, вам не нужно приводить подклассы к родительским классам, чтобы поместить их в коллекцию.