Quello che mi piacerebbe ottenere è usare le classi (ora due, più tardi) con un'interfaccia diversa allo stesso modo, quindi vorrei evitare di usare le decisioni basate sull'interfaccia ai livelli superiori, ad esempio, non voglio vedere cose come questa:
if ($class instanceof 'ThisInterface') {
$thisInterfaceImplementation->doStuff();
}
Invece, mi piacerebbe chiamare il metodo come $ class- > doStuff () e inserire le decisioni in un wrapper come classe. Vorrei anche evitare i metodi vuoti.
Sto pensando di usare Wrapper o Adapter (e forse Observer), ma sono curioso, forse c'è un modo migliore per farlo.
Per essere più chiari ecco una piccola spiegazione su ciò che cerco di risolvere. Stiamo costruendo un'applicazione che deve comunicare con le tipografie. Ciò significa che dobbiamo aggiungere una o più pagine aggiuntive ai fogli di stampa (o no, o forse in modo diverso), forse dobbiamo rinominare i file pdf su ftp in questo o in quel modo, o per niente.
Abbiamo un paio di decisioni da prendere in base alle stampanti (sulle nostre interfacce), ma a diversi passaggi o processi, quindi penso che il modello di strategia non sarebbe una buona misura (e dovrei creare metodi vuoti o usare quelle se)
Il pattern Observer sembra risolvere tutti i miei "problemi", ma potrebbe essere eccessivo in questo caso. Con questo, potrei semplicemente inviare eventi ai punti che devo prendere una decisione e solo gli osservatori iscritti a questo evento farebbero le cose necessarie. Nessun metodo vuoto, non molto problema con diverse interfacce. D'altra parte, invieremo ogni evento solo in un punto del codice, quindi questo sembra essere un "mancato utilizzo" di questo modello.
Qualsiasi consiglio sarebbe apprezzato!