Namespace & Design patterns

A namespace is just a grouping of related classes. It's a method of putting classes inside a container so that they can be clearly distinguished from other classes with the same name. A namespace is a logical grouping rather than a physical grouping. 

Design patterns are just convenient ways of reusing object-oriented code between projects and between programmers. The idea behind design patterns is simple write down and catalog common interactions between objects that programmers have frequently found useful.