As per “Design Patterns – Elements of Reusable Object-Oriented Software” book, there were 23 design patterns were classified in three categories: Creational, Structural and behavioral patterns.
These design patterns provides way to create objects while hiding the creation logic, rather than instantiating objects directly using new operator. This gives program more flexibility in deciding which objects need to be created for a given use case.
These design patterns concern class and object composition. Concept of inheritance is used to compose interfaces and define ways to compose objects to obtain new functionality.
These design patterns are specifically concerned with communication between objects.
These design patterns are specifically concerned with the presentation tier. These patterns are identified by Sun Java Center.