Design Patterns – OOP Way of Handling Flow Control Heavy Applications

control flowdesign-patternsobject-orientedobject-oriented-design

I'm refactoring a huge WPF application whose complexity stems from the way it deals with flow control. It has a lot of "tiny business rules" that make it really difficult to make a modification without breaking something. These rules are things like

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.

I've thought about creating a lot of different classes for validation and keeping the global state but I'm not sure if there's a design pattern or something focused on dealing with this kind of situation.

Best Answer

One approach that might fit is a finite state machine. There are tools that help you build and visualize them but you can also model it with standard OOP practices.

Related Topic