Sobes.tech
Junior — Senior
49

Нарушение принципа слабой связанности в трехслойной системе

任务条件

В системе реализованы три уровня: представление (View), контроллер (Controller) и модель (Model). В текущем варианте слой представления напрямую вызывает функции контроллера, а контроллер сразу обращается к модели. Такое взаимодействие нарушает принцип слабой связанности: уровни становятся зависимыми друг от друга, что усложняет замену, тестирование и масштабирование компонентов.

Для исправления следует ввести промежуточный слой‑сервис или использовать паттерн «Facade», чтобы View зависел только от абстракций контроллера, а контроллер – от абстракций модели.

Пример текущего кода (с переименованными функциями):

# View
@app.route("/user/<user_id>")
def fetch_user(user_id):
    return ctrl_fetch_user(user_id)

# Controller
def ctrl_fetch_user(user_id):
    ...
    return model_fetch_user(user_id)

# Model
def model_fetch_user(user_id):
    return session.query(User).filter(User.id == user_id)

После рефакторинга слой представления будет работать с сервисом, а сервис – с репозиторием модели, что полностью разъединит уровни.