0
Исправлено

Chain of Responsibility

Denys Makhov 7 年 前 更新人: anonymous 7 年 前 1

Здравствуйте, спасибо за отличный сайт!

В Java реализации паттерна "Chain of Responsibility" допущена ошибка в методе:

public Middleware linkWith(Middleware next) {
        this.next = next;
        return next;
    }

Таким образом, после построения цепочки, всегда будет вызываться лишь последний элемент. Предлагаю заменить текущую логику на:

public Middleware linkWith(Middleware next) {
    if (this.next == null) {
        this.next = next;
    } else {
        this.next.linkWith(next);
    }
    return this;
}

解答

解答
Исправлено

Добрый день, Денис.


Спасибо за баг репорт. Я исправил баг немного по-другому, изменив порядок вызовов в клиентском коде.


Middleware middleware = new ThrottlingMiddleware(2);
middleware.linkWith(new UserExistsMiddleware())
        .linkWith(new RoleCheckMiddleware());


解答
Исправлено

Добрый день, Денис.


Спасибо за баг репорт. Я исправил баг немного по-другому, изменив порядок вызовов в клиентском коде.


Middleware middleware = new ThrottlingMiddleware(2);
middleware.linkWith(new UserExistsMiddleware())
        .linkWith(new RoleCheckMiddleware());


UserEcho 的客户支持