Sto cercando il modello migliore da applicare nel mio problema. Ho un'interfaccia che definisce la mia funzionalità della classe di servizio
interface NegotiationInterface {
abstract public function resetNegotiation(Negotiation $negotiantion);
}
Una classe principale lo implementa
public class NegotiationService implements NegotiationInterface {
public function __construct(…Some Dependencies…)
{
….
}
public function resetNegotiation(Negotiation $negotiantion){
…. //All business logic
}
}
NegotiationService è registrato sotto il contenitore DI (basato su Symfony) e utilizzato in tutto il campo dall'identificativo del servizio.
$negotiationService = $this->container->get(“negotiation_service”);
$negotiationService->resetNegotiation($negotiation);
Tuttavia alcuni dei nostri clienti (la negoziazione contiene le informazioni sul cliente), richiedono un ulteriore passaggio dopo aver chiamato resetNegotiation, ad esempio la nostra logica di business comune + chiamando un webservice. Ho raggiunto lo schema del decoratore, ma non sono sicuro che sarebbe l'approccio migliore durante l'utilizzo di DI. In tal caso, come dovrei candidarmi insieme a DI. Mi piacerebbe avere questi passaggi aggiuntivi caricati dinamicamente in base al client.