Designing an n-tier architecture, part 1 – controllers
There are many architectural patterns that have become popular in the last couple of years – Model View Controller (MVC), Model View ViewModel (MVVM), Model View Presenter (MVP), Coordinator, and several others. These patterns have become so numerous that they are sometimes pejoratively referred to as MV* patterns. This essentially means that no matter which pattern you choose, you need some kind of intermediary object between your model and your view.
A concept that is shared by all the popular patterns is the idea of tiers/layers (we will be using the terms tier and layer interchangeably throughout this chapter). Each tier in your app is a section of the MV* classes that have a single responsibility. The term n-tier (sometimes called a multi-tier architecture) just means that you are not limited on the number of tiers in your app. You can have as many or as few as you need.
The top-most tier is one that you are already...