Note that the UML and Java codes were adapted from the following sites:
- Decorator, Decorator, Factory and Composite pattern examples are taken from https://geeksforgeeks.org
- Proxy, Adapter, and Observer pattern examples taken from https://www.baeldung.com/