Does this pattern have a name?
No, ciò che hai disegnato non è un modello. Mostrando un sacco di buona volontà posso vedere alcune influenze dai modelli.
È difficile dare qualche consiglio senza conoscere ulteriori dettagli. Ad ogni modo, per me sembra un po 'strano che tu stia utilizzando un'interfaccia per tutti gli algoritmi di previsione sebbene non supportino tutti i metodi.
Per evitare che tutte le classi concrete applichino sempre tutti i metodi, puoi utilizzare il modello di adattatore . Con il pattern dell'adattatore puoi decidere quale metodo vuoi implementare (sovrascrivendo il metodo) nella tua concreta classe dell'algoritmo di previsione.
Questoèutilequandoestendilatuainterfaccia,ades.aggiungendounnuovometodo.Questonuovometodonondevepiùessereimplementatointutteleclassiconcrete-solonellaclasseadapterenelleclassichefornisconoun'implementazionedelmetodo.Unaltrovantaggioèchepuoigarantireunagestionecomunedeimetodinonsupportati.
Aproposito,utilizzandounaclasseAdapterpuoiancheimplementareunaltropatternutile,il modello di metodo Template . Sono abbastanza sicuro a prescindere dall'algoritmo che usi, hai alcune operazioni comuni per tutti gli algoritmi.
Se hai bisogno di più consigli per favore aggiungi alcuni dettagli.