/design-patterns

Design Patterns

Primary LanguageJava

Design Patterns in Java

Design patterns are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.

You can’t just find a pattern and copy it into your program, the way you can with off-the-shelf functions or libraries. The pattern is not a specific piece of code, but a general concept for solving a particular problem. You can follow the pattern details and implement a solution that suits the realities of your own program.

Patterns are often confused with algorithms, because both concepts describe typical solutions to some known problems. While an algorithm always defines a clear set of actions that can achieve some goal, a pattern is a more high-level description of a solution. The code of the same pattern applied to two different programs may be different.

An analogy to an algorithm is a cooking recipe: both have clear steps to achieve a goal. On the other hand, a pattern is more like a blueprint: you can see what the result and its features are, but the exact order of implementation is up to you.

Pattern description:

  • Intent of the pattern briefly describes both the problem and the solution.

  • Motivation further explains the problem and the solution the pattern makes possible.

  • Structure of classes shows each part of the pattern and how they are related.

  • Code example in one of the popular programming languages makes it easier to grasp the idea behind the pattern.

Project description

In this project I try to present some of the most common design patterns. The strucure of this project:

  • You can find each pattern in the src/ folder
  • Each pattern has own description in README.md file: Intent, Motivation, Structure, Code example
  • You can read my Wiki for the detailed description of each pattern

Websites

Design Pattern Guide