PROJECT – Implementing an Online Shopping System
withUse of the Decorator, Strategy, and Command Patterns

(and more!)



You are to design and implement an online shopping system. You may include actual features of Amazon (e.g., Prime customers), or you may include your own features. The capabilities of the system MUST INCLUDE the following:


  • generation of a receipt of some kind for all of the orders placed, and the

inclusion of items on the receipt that are a result of the particular items

purchased (by use of the Decorator design pattern).


  • the use of the Command design pattern for implementation of the

overall command-driven aspect of the system.


  • the use of the Strategy design pattern for any part of the system the

demonstrates its appropriate use
In addition, utilize any other design patterns that can be appropriately applied.Be creative in the features supported by the inclusion of such design patterns.  For example, the Decorator design pattern can be used for any situation in which there are various combinations of behavior that cannot be determined until runtime (not just the printing of a receipt). For example, the total amount of an order may utilimately be based on (a) the items ordered, (b) the shipping option selected, (c) whether a preferred (“prime”) customer or not, (d) whether you have any credit from previous purchases/returns, (e) whether you are purchasing items that are currently on sale, (f) whether the purchase of a given item gives you a free associated item, etc.  The same is true of the Strategy pattern, it can be used in any situation in which a section of code (algorithm) can vary, and especially if it can be judged that it may vary in the future.




Materials are provided giving details on the design and example use of the Decorator pattern (from a previous Best Buy assignment(Decorator)) and the Command pattern (from a previous automated restaurant system assignment(Restaurant)). These should be used for studying the details of the GENERAL use of these patterns.



System Interface / User Interface

Your system must be designed with the use of a system interface class, as demonstrated in the automated restaurant system assignment. The methods of the system interface must only return values of type String for a separate user interface to call .The user interface may be text-based, or a GUI interface.



Please submit one pdf document along with your code. (Export all class diagrams to pdf. Do not submit file formats of the particular UML drawing tool used.)and also Your code separately. Your submission should include,

  • A use case diagram of your system. There is no set number of use cases to include – that will vary based on the particular system designing. Include an explanation of each use case. (Scenarios do not need to be provided.)
  • The class diagram for your system. Make sure to include all of the classes and interfaces. The class diagram should include the relationships of association, composition, aggregation, generalization (inheritance), and dependency where they exist; notation of multiplicity, navigation, and role names where appropriate; and the inclusion of the methods within each class, including access modifiers (public, protected, private), parameters, and return type (instance variables do not need to be included).
  • Discussion of the use of each design pattern within your design, including
    • why you made the decision to incorporate the use of the pattern
    • the benefits of the included pattern
    • what specific aspects of the system can be easily modified as a

result of the use of design patterns in the design

  • Program code, with sufficient in-code documentation


  • List of commands the system provides, with a brief explanation of each