0
Fixed

Chain of Responsibility

Denys Makhov 7 years ago updated by anonymous 7 years ago 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;
}

Answer

Answer
Fixed

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


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


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


Answer
Fixed

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


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


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