Sto refactoring una grande applicazione WPF la cui complessità deriva dal modo in cui si occupa del controllo del flusso. Ha un sacco di "piccole regole aziendali" che rendono davvero difficile apportare modifiche senza rompere qualcosa. Queste regole sono cose come
If the window mode is foo but this is the first time they've pressed this button and the user has a certain role, show this, else validate another thing and show that, else show another thing.
Ho pensato di creare molte classi diverse per la convalida e mantenere lo stato globale, ma non sono sicuro che ci sia un modello di progettazione o qualcosa di focalizzato su come affrontare questo tipo di situazione.