Установщики, возвращающие ссылку на экземпляр. Паттерн или антипаттерн?

Я думал о структуре кода и о сеттерах. Раньше это были методы void, так почему бы не использовать какое-то возможное возвращаемое значение, чтобы включить какую-то новую структуру кода?

Моя идея заключалась в том, чтобы изменить все установщики свойств с void на ссылку на экземпляр, чтобы мы могли делать установщики последовательно , или что-то другое. Вот пример:

public class MyClass {
    private int foo;
    private String bar;

    public MyClass setFoo(int foo) {
        this.foo = foo;
        return this;
    }

    public MyClass setBar(String bar) {
        this.bar = bar;
        return this;
    }

}

Затем в другом месте кода мы могли бы сделать:

...
MyClass myInstance = new MyClass();
myInstance.setFoo(auxFoo).setBar(auxBar);
...

Это позволяет установить все свойства класса в одной строке, что полезно в методах преобразования.

Или даже:

...
return myInstance.setFoo(auxFoo);

Это было моей целью, например, иметь возможность установить свойство ошибки при ее возврате. Это может, например, упростить блок catch.

РЕДАКТИРОВАТЬ: После некоторых ответов мне нужно добавить:

  • Вопрос касается только сеттеров (не о том, чтобы делать это во всех методах), и не ограничивается цепочкой, а другими способами. как в примере return .
  • Может ли изменение void на что-то другое создать какие-либо проблемы? Например, самоанализ JavaBeans.
  • Вы видите еще какие-нибудь преимущества или недостатки в этом?

Я надеялся увидеть какое-то обсуждение.

6
задан gvlasov 12 February 2015 в 21:19
поделиться