Формулировка

Реализовать систему формирования и вывода статей.

Функциональные требования

SOLID

SRP – сущности имеют свои ответсвенности: текст - формирование форматированной строки для вывода, параграф, статья – композиция текстов.

OCP – Поддержать возможность добавления новых видов параграфов без изменения уже имеющихся классов (путем добавления нового билдера под новый вид)

LSP – реализации текста не должны нарушать инвариант контракта, описываемого интерфейсом

ISP – интерфейсы должны описывать один функционал

DIP – в реализованной модели не должно быть лишних завязок на конкретные типы

Сущности

Параграф

Атрибуты: