Beyond our base concepts, we also need to think about the design of the other elements of the application. For simplicity, we won't consider multiple users; we'll just have a single one, the active user. This user should be able to do the following:
- Create media collections of a certain type.
- Manage existing collections.
- Display the contents of existing collections.
- Manage the contents of displayed collection.
Most importantly, this time, we would like to persist our data (that is, the collections and their contents) and be able to restore the data when we come back to the application. We'll worry about the how later on.
With this in mind, we can start thinking about MVC again and learn how to distribute/delimit the responsibilities, for example, by using the MVC pattern as we did in the last chapter.
The following is our first proposal:
There are good and bad things about this first approach. First of all, we have applied the MVC pattern again. As we saw in the previous chapter, this helps us to keep a clear separation of concerns between the model, the view, and the controller layers.
The main problem we see with this approach is that our controller will have to handle persisting media collections on its own. This is bad because it gives it too many responsibilities.