Work your way up
Controllers are the glue that binds your application together; it's often useful to look at our wireframe again and break down the aspects that represent view classes and will need a controller to orchestrate their actions. The basic wireframe can be seen in the following screenshot:
In this application, as we have a very straightforward layout and set of interactions between components, we can get away with a very simple architecture.
While it's important to create a strong starting structure in the early days of an application, you should always strive to build something that is clearly designed and doesn't contain classes that have been added just in case they are needed.
Tip
You Aren't Going To Need it (YAGNI) is a popular term with some software developers who believe that less is moreādon't write code based on some far-future assumption about what you might need. Instead, iterate on...