Outlining specifications
In the previous chapter, we created a simple list of sandwich ingredient objects using a factory pattern and connected it to a layout. However, we only represented a single type of filling. Before we can create a more sophisticated system, we need to plan our data structure, and to do that we need to consider the choices we present the user.
Firstly, what options can we offer the user to make the process simple, fun, and intuitive? Here is a list of functions a potential user may want from such an app:
Order an off-the-shelf sandwich, with no customization
Customize an off-the-shelf sandwich
Start with some basic ingredients and build from there
Order or customize a sandwich they have had before
Build a sandwich from scratch
Review and edit their sandwich at any time
Previously, we created an individual menu for cheeses, but a category for each food type may offer a clumsy solution: a user wanting a bacon, lettuce, and tomato sandwich may have to visit three separate menus...