Skip to content

Instantly share code, notes, and snippets.

@VladislavSoren
VladislavSoren / design_pattern_сhain_of_responsibility_example.py
Created August 27, 2024 13:37
design_pattern_сhain_of_responsibility_example
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Any, Optional
class Handler(ABC):
"""
Интерфейс Обработчика объявляет метод построения цепочки обработчиков. Он
также объявляет метод для выполнения запроса.
"""
@VladislavSoren
VladislavSoren / design_pattern_proxy_example.py
Created August 27, 2024 11:25
design_pattern_proxy_example
from abc import ABC, abstractmethod
class Subject(ABC):
"""
Интерфейс Субъекта объявляет общие операции как для Реального Субъекта, так
и для Заместителя. Пока клиент работает с Реальным Субъектом, используя этот
интерфейс, вы сможете передать ему заместителя вместо реального субъекта.
"""
@VladislavSoren
VladislavSoren / design_pattern_flyweight_example.py
Last active August 27, 2024 11:25
design_pattern_flyweight_example
import json
from typing import Dict
class Flyweight:
"""
Легковес хранит общую часть состояния (также называемую внутренним
состоянием), которая принадлежит нескольким реальным бизнес-объектам.
Легковес принимает оставшуюся часть состояния (внешнее состояние, уникальное
для каждого объекта) через его параметры метода.
@VladislavSoren
VladislavSoren / design_pattern_decorator_example.py
Created August 27, 2024 08:14
design_pattern_decorator_example
from abc import ABC, abstractmethod
class DataSource(ABC):
@abstractmethod
def write_data(self):
pass
@abstractmethod
def read_data(self):
@VladislavSoren
VladislavSoren / design_pattern_bridge_example.py
Last active August 27, 2024 08:15
design_pattern_bridge_example
class Remote:
def __init__(self, device):
self.device = device
def volumeDown(self):
volume_now = self.device.getVolume()
volume_new = volume_now - 10
self.device.setVolume(volume_new)