0
respostas

Como adicionar funcionalidade a uma classe sem perde sua referencia

Imagine, vamos iniciar os trabalhos em um projeto que já estava em andamento, neste projeto temos uma classe chamada Produto que já tem mais de 1000 linhas e está extremamente complexa.

O gerente vem e pede para adicionar uma funcionalidade nova neste produto que seria a possibilidade de recuperar fornecedores através de um produto.

Como já sabemos a classe Produto está muito complexa e não queremos piorar a situação..

A minha pergunta é como crio um novo método nesta classe para chamar todos os fornecedores de um produto sem deixar esta classe mais complexa e sem aumentar a quantidade de linhas dela?

Eu estava pensando em usar o Decorator, mas não quero perder as referencias dos métodos anteriores, por exemplo:

$produto->getId(); 
$produto->fornecedores(); // esta seria a nova funcionalidade/método.. 

Quero usar o novo método e os já existente na classe sem afetar a classe Produto.

Também tinha pensado em usar Traits mas acho que estaria acoplando ainda mais a classe Produto

O que eu deveria fazer neste caso? Qual seria a solução mais amigável?