Using singletons for the model layer
A singleton, as the name suggests, is a class where there can only be one instance of that class. If you think about data storage, this makes sense. If you have more than one place to store the same set of data, it is possible, if not highly likely, that at some point you will attempt to store or retrieve something inconsistently.
Think about having two identical sets of folders to manage your e-mails. If you have two (or more) folders marked as Urgent
, how will you know where to store that urgent e-mail. And when you need to check if you have any urgent emails, you will need to check both. What if you forget and only check one?
Also, consider a shopping app, where the user browses from page to page and each page is, perhaps, a separate Fragment/Activity. If they add something to the cart on more than one page, they could end up with two separate carts instead of one with both the items in it.
When we are making straightforward apps, it is possible that...