devterview_$ iniciar simulação

Cenário: refatorar uma hierarquia que explodiu

MédioPlenoDesign OO

Pergunta

Você tem `Personagem` e subclasses `Guerreiro`, `Mago`, `GuerreiroVoador`, `MagoVoador`, `MagoInvisível`... a hierarquia está explodindo com as combinações. Como composição resolve?

Resposta esperada

O problema é tentar expressar N capacidades independentes (voar, ficar invisível, atacar corpo a corpo, lançar magia) via herança, que só dá uma dimensão — cada combinação vira uma classe, e são 2^N. Com composição, `Personagem` tem uma lista de comportamentos/componentes: `movimento` (Andar, Voar), `ataque` (Espada, Magia), `habilidades` (Invisibilidade). Você monta um personagem combinando peças em runtime, e adicionar 'nadar' é uma classe nova de movimento, não uma explosão de subclasses. É o padrão Strategy / Entity-Component. O `Personagem` delega: `this.movimento.mover()`. Perde-se um pouco de rigidez de tipo (não existe mais o tipo `MagoVoador`), ganha-se flexibilidade e fim da explosão combinatória.

Por que perguntam isso

Cenário pleno/sênior — o exemplo didático clássico de 'prefira composição'. Termo-chave: 'explosão combinatória', Strategy, Entity-Component.

#composicao#strategy#explosao-combinatoria
publicidade

Relacionadas