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?