Defines various object oriented design patterns as described by the gang of four