Let us do the design for a coffee shop today. Let me start with the description of how the coffee shop we want to design works first. There are three different actors in our scenario and i have listed the different actions they do also below
* Customer
- Pays the cash to the cashier and places his order, get a token number back
- Waits for the intimation that order for his token is ready
- Upon intimation/notification he collects the coffee and enjoys his drink
( Assumption: Customer waits till the coffee is done, he wont timeout and cancel the order. Customer always likes the drink served. Exceptions like he not liking his coffee, he getting wrong coffee are not considered to keep the design simple.)
* Cashier
- Takes an order and payment from the customer
- Upon payment, creates an order and places it into the order queue
- Intimates the customer that he has to wait for his token and gives him his token
( Assumption: Token returned to the customer is the order id. Order queue is unlimited. With a simple modification, we can design for a limited queue size)
* Barista
- Gets the next order from the queue
- Prepares the coffee
- Places the coffee in the completed order queue
- Places a notification that order for token is ready
Coffee Shop Class diagram |
Please take a look Restaurant Design once you are done here. The restaurant is slightly different from the coffee shop in which it has a waiter to handle all your needs. Please leave your comments.
This comment has been removed by the author.
ReplyDeleteHere the identification of common classes and their relationship is well explained. How about using builder pattern to preparing a order and using abstract factory to create various objects. Like we can have a factory which will give cold or hot coffee and using builder pattern we can create a combo etc.. Please suggest.
ReplyDeleteWe are a quality conscious parts manufacturer, based in Narol area of Ahmedabad, Gujarat, India. We manufacture un-machined and machined grey cast iron castings from 200 grams to 120 kilograms.
ReplyDeleteWe have a full fledged machine shop having CNC lathes and vertical machining centres for precision machining of parts from various types of engineering materials like CI, alloy steels, stainless steel, engineering plastics, non ferrous metals.
Elevator Parts manufacturing in Ahmedabad