Skip to content

gentaliti/javadesignpatterns

Repository files navigation

Design patterns implemented in Java

Introduction

In software engineering, design patterns are standard solutions to common software design problems.

Each pattern describes a problem that occurs over and over again and then provides a solution which you can use in many different scenarios.

Types of design patterns

As described in design pattern reference book Design Patterns - Elements of Reusable Object-Oriented Software, design patterns can be classified in three categories: Creational, Structural and Behavioral patterns.

Creational Patterns

Creational design patterns abstract the instantiation process.

They deal with object creation mechanisms, while hiding the creation logic. This provides us flexibility for creating objects based on different use cases.

Creational patterns implemented here are:

Structural Patterns

Structural patterns are concerned with how classes and objects are composed to form larger structures. Rather than composing interfaces or implemetations, these patterns describe ways to compose objects to realize new functionality.

The ability to change the composition at runtime, adds flexibility to object composition.

Structural patterns implemented here are:

Behavioral Patterns

Behavioral patterns are concerned with algorithms and the assignment of responsibilities between objects.

In simple words, they describe how different objects and classes send messages to each other to make things happen and how the steps of a task are divided among different objects.

Behavioral patterns implemented here are:

Credits

Design Patterns: Elements of Reusable Object-Oriented Software - Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm

Head first Design Patterns - Eric Freeman, Elisabeth Freeman, Kathy Sierra and Bert Bates

Wikipedia (https://en.wikipedia.org/wiki/Software_design_pattern)

About

Design Patterns implemented in Java

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages