Lavoro per un'azienda nel reparto di ricerca software. Utilizziamo algoritmi dal nostro software reale e li avvolgiamo in modo da poterli utilizzare per la prototipazione. Ogni volta che cambia l'interfaccia dell'algoritmo, dobbiamo adattare i nostri wrapper rispettivamente.
Recentemente tutti gli algoritmi sono stati refactored in modo tale che invece di accettare molti input diversi e restituire output tramite parametri di riferimento, accettano ora un contenitore di dati di input e un contenitore di dati di output (quest'ultimo viene passato per riferimento). L'interfaccia dell'algoritmo è limitata a una chiamata di una funzione statica del tipo:
class MyAlgorithm{
static bool calculate(MyAlgorithmInput input, MyAlgorithmOutput &output);
}
Questo è in realtà un progetto molto potente, sebbene non l'abbia mai visto prima in un ambiente di programmazione C ++. Le modifiche al numero di parametri e ai loro tipi di dati sono ora incapsulate e non cambiano il callback dell'algoritmo.
Nell'ultimo algoritmo che ho sviluppato ho usato lo stesso schema. Ora voglio sapere se questo è un modello di design popolare e come viene chiamato.