--- title: Архитектура и Философия weight: 1 --- **Цель:** Понять основные принципы проектирования, лежащие в основе модульности Quetza. ## Философия проектирования ### Соглашение важнее конфигурации (Convention Over Configuration) Quetza минимизирует шаблонный код, полагаясь на строгую структуру папок. - **Никакого центрального реестра:** Сама файловая система _является_ реестром. - **Результат:** Вам не нужно обновлять файл конфигурации, чтобы добавить модуль; вы просто создаете папку. ### Композиция важнее наследования (Composition Over Inheritance) Модули состоят из возможностей (capabilities), а не наследуются от базового класса. - **Гибкость:** Модули могут использовать любую внутреннюю архитектуру (Функциональную, ООП), пока они экспортируют необходимые интерфейсы. ### Изоляция важнее интеграции (Isolation Over Integration) Модули не могут напрямую вызывать друг друга. - **Почему:** Это предотвращает сильную связность (tight coupling). - **Преимущество:** Вы можете удалить любой модуль, не сломав остальную часть бота. ## Основные сущности | Сущность | Роль | Жизненный цикл | | :--- | :--- | :--- | | **Client** | Локатор сервисов и оркестратор | Синглтон. Руководит всем. | | **Module** | Пространство имен для функций | Загружается при запуске. | | **Command** | Конечная точка взаимодействия с пользователем | Без состояния (Stateless). Запрос/Ответ. | | **Event** | Реактивный наблюдатель (Observer) | Подписывается при запуске. | | **Controller** | Менеджер состояния | Сохраняется между взаимодействиями. | --- **См. также:** - [Паттерн Service Locator](https://ru.wikipedia.org/wiki/Локатор_служб) - [Паттерн Observer](https://ru.wikipedia.org/wiki/Наблюдатель_(шаблон_проектирования))