-Multiple classes -Factory class that uses enum to create a concrete instance
-Every class has its own properties -Decorator class that has a shape and calls methods -New properties for the basic classes are added by new decorator classes that inherit the base decorator
-Has a maker class that makes instances of the basic classes and methods for all of them
-Context class that gets a strategy and performs operations for the current strategy
-Abstract class inherited by concrete classes