A resposta mais elegante é provavelmente um Enum
.
Crie um valor enum para cada grupo de cores, e quando você criar seu objeto Property
(que herda de Square
), passe o grupo de cores como um parâmetro construtor (já que é um obrigatório valor para ter um Property
válido). Railroad
, Utility
e similares não aceitam esse parâmetro, pois não têm grupos e também herdam diretamente de Square
(não Property
). *
Para verificar se um jogador tem todas as propriedades de um determinado grupo, você pode usar um Expressão lambda se você estiver usando o Java 8, ou simplesmente ter um loop foreach ao longo das linhas
for (property: allProperties)
{
if (property.getGroup() == targetGroup && property.getOwner() != targetOwner) return false;
}
return true;
* Também seria válido ter uma classe GroupedSquare
entre Property
e Square
, com Railroad
e Utility
herdando também e passando um valor enum codificado, mas acho que menos elegante.