Design patterns are mainly of three types
Creational patterns are ones that
create objects for you, rather
than having you instantiate objects directly. This gives your
program more flexibility in deciding which
objects need to be created for a given case.
Structural patterns help you compose
groups of objects into larger structures,
such as complex user interfaces or
Behavioral patterns help you define the
communication between objects in your
system and how the flow is controlled in
a complex program.