The document discusses software design patterns including:
- Architectural patterns define system and subsystem structure and behavior to meet non-functional requirements.
- Design patterns define reusable object-oriented software component structures to meet functional requirements.
- Examples of design patterns discussed include Composite, Strategy, and Singleton.
- The Singleton pattern ensures only one globally accessible instance of a class is created.