What is a Design Pattern?

A software design pattern is a reusable solution to a commonly occurred problem in software design. A design pattern can typically solve a recurring problem when building an application. These problems include object creation, hiding complexity from the client, and class/object composition.

We will look at the popular design patterns and how to implement them in Java and/or C#.

Creational – Design patterns that define how objects are created. The goal is to decouple the client from initializing the objects their selves

  • Factory – Parameter driven creational design pattern that does not expose the instantiation logic to the client.
  • Singleton – Allows you to have one instance of an object that can be accessed throughout the application.
  • Builder – Helps limit an objects construction complexity. 
  • Abstract Factory – Contains a Factory class that creates other factories.
  • Prototype – Avoids costly creation of objects by creating a copy of an existing object.

Structural – Design patterns focus on how you use objects and increase communication between them.

  • Facade – Provides a simple interface to hide the complex system underneath. It reduces dependencies to the client.
  • Adapter – Works as a bridge between two incompatible interfaces.