Eu acho que a escolha da língua é irrelevante. O que é importante para tomar a decisão é como a informação é usada.
Se Sample
s se comportar de maneira diferente, dependendo do valor de isRelevent
, então faz sentido dividi-lo em três (não duas) classes. A base Sample
class, a RelevantSample
class e a IrrelevantSample
class. Todos os objetos de amostra seriam instanciados de uma das duas classes posteriores (seguindo assim a heurística de que as classes base deveriam ser abstratas). Outros objetos podem informar objetos de amostra de eventos sem se preocupar se a amostra é relevante ou não.
No entanto, se for mais uma questão de outros objetos se comportarem de maneira diferente, dependendo da relevância da amostra, você desejará usar a opção 1 e tornar isRelevant um campo que possa ser consultado.