Voglio implementare qualcosa di simile all'algoritmo descritto qui . Non so nemmeno se "algoritmo" è la parola giusta, dal momento che molti dei passaggi sono considerati algoritmi stessi. Quello che ho fatto in passato in situazioni come questa è incapsulare ogni passaggio in un metodo privato di una classe, e quindi fornire un metodo pubblico che chiama ciascuno dei passi in ordine. Tuttavia, ritengo che questo violi il principio di progettazione della coesione. L'unico modo in cui i passaggi si riferiscono l'uno all'altro è che condividono i dati e vengono chiamati uno dopo l'altro. Esiste un modello di progettazione che disaccoppia queste operazioni l'una dall'altra? O è il modo in cui ho descritto sopra l'unico modo per avvicinarsi a questo?