← К задачам
Средне · +5Паттерны

Паттерн «Состояние»: жизненный цикл документа

Реализуйте паттерн Состояние для документа.

Класс Document начинает в состоянии 'draft' (атрибут state). Переходы:

  • publish(): draft → moderation, затем moderation → published; из published ничего не меняет;
  • reject(): moderation → draft; в остальных состояниях ничего не меняет.

Поведение зависит от текущего состояния — это и есть суть паттерна.

class Document:
    def __init__(self):
        ...
    def publish(self):
        ...
    def reject(self):
        ...
Для запуска тестов необходима авторизация.
Поддержать проект