This assignment has two parts. Part 1 reflects your understanding on how and why design patterns are used in real-life software. In Part 2 of this assignment you are required to extend a given text based application (illustrated in Chapter 12 and 13 of the book “Java how to program” by Deitel and Deitel) to incorporate several important design patterns, and a Graphical User Interface (GUI) using Java language. Reflection on your work will also be required.