Files
ermnvldmr.com/services/docs/content/ru/quetza/concepts/architecture.md
T

46 lines
2.7 KiB
Markdown

---
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/Наблюдатель_(шаблон_проектирования))