A controller is a component that manage the flow of data between the model and the view. Controllers are a key part of the Model-View-Controller (MVC) architectural pattern.

The book Patterns of Enterprise Application Architecture by Martin Fowler defines