Model-view-controller is a well-known programming pattern that is used to organize software code. It suggests code separation within a software into three roles: input (model), process (controller), and output (view). When the software gets really big, such organization of business logic makes it manageable, as well as easier to maintain and extend in the future.
However, many new programmers and non-techy people find it difficult to understand the concept. Here is my attempt to visualize it by using the metaphor of supermarket:
Model – product info and price data retrieve from external source, such as the supermarket headquarter, supplier and so on.
View – shelf arrangement, decoration, poster, price tags, and things that could be affected by the data (product info and price). View is a passive element, which doesn’t automatically update by itself.
Controller – the staff in the store, who would constantly update and rearrange the shelves, decoration and so on base on the ever changing external data provided to them.




