/Design-Patterns-In-Python

Own code examples in Python for many design patterns

Primary LanguagePythonApache License 2.0Apache-2.0

Design patterns in Python

Prerequsites

Virtual environment

Create virtual environment:

python -m venv venv

Activate virtual environment:

source venv/bin/activate

Depenendencies

Freeze currently installed packages:

pip freeze > requirements.txt

Install packages from file:

pip install -r requirements.txt

Using repository

Start all tests:

pytest

Start all tests with coverage:

pytest --cov=patterns tests

Design Patterns by examples

Examples of my code for selected design patterns described in Source Making and Refactoring Guru.

Creational patterns

  • Abstract Factory - Creates an instance of several families of classes
  • Builder - Separates object construction from its representation
  • Factory Method - Creates an instance of several derived classes
  • Object Pool - Avoid expensive acquisition and release of resources by recycling objects that are no longer in use
  • Prototype - A fully initialized instance to be copied or cloned
  • Singleton - A class of which only a single instance can exist

Structural patterns

  • Adapter - Match interfaces of different classes
  • Bridge - Separates an object's interface from its implementation
  • Composite - A tree structure of simple and composite objects
  • Decorator - Add responsibilities to objects dynamically
  • Facade - A single class that represents an entire subsystem
  • Flyweight - A fine-grained instance used for efficient sharing
  • Private Class Data - Restricts accessor/mutator access
  • Proxy - An object representing another object

Behavioral patterns

  • Chain of responsibility - A way of passing a request between a chain of objects
  • Command - Encapsulate a command request as an object
  • Interpreter - A way to include language elements in a program
  • Iterator - Sequentially access the elements of a collection
  • Mediator - Defines simplified communication between classes
  • Memento - Capture and restore an object's internal state
  • Null Object - Designed to act as a default value of an object
  • Observer - A way of notifying change to a number of classes
  • State - Alter an object's behavior when its state changes
  • Strategy - Encapsulates an algorithm inside a class
  • Template method - Defer the exact steps of an algorithm to a subclass
  • Visitor - Defines a new operation to a class without change