Опишем пример создания классов цепочка обязанностей на примере изменения значений класса Device.
Базовый класс, который создает цепочку модификаций CreatureModifier. Параметр next_modifier ссылкой на модификатор, который необходимо вызвать следующим. Метод set_froz применяет цепочку обязанностей к объекту, если параметр next_modifier есть. Метод add_modifier формирует цепочку обязанностей.
Создадим класс цепочку DoubleModifier, унаследовав его от родителя CreatureModifier. Изменим метод, который применяется к цепочке и вызовем родительский метод цепочки (обязательно).
Класс NoModidier обрывает цепочку, так как у него нет вызова родительского метода set_froz.