Design Patterns#

Solid Principles#

Principle

Single responsibility

A class should have one and only one reason to change, meaning that a class should have only one job.

Open/closed

Objects or entities should be open for extension but closed for modification.

Liskov substitution

Let q(x) be a property provable about objects of x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.

Interface seggregation

A client should never be forced to implement an interface that it doesn’t use, or clients shouldn’t be forced to depend on methods they do not use.

Dependency inversion

Entities must depend on abstractions, not on concretions. It states that the high-level module must not depend on the low-level module, but they should depend on abstractions.

Creational#

Pattern

Description

Builder

Factory

Singleton

Behavioral#

Pattern

Description

Template

Structural#

Pattern

Description

Adaptor

Allows incompatible interfaces to work together, acting like a bridge between them

Decorator

Strategy