69631


オブジェクト指向において呼び出しが連続すること、別クラスを得るためにあるクラスから参照を重ね続けるような方法・現象はなんていうのでしたでしょうか？

例:

[code]

    public static void main(String[] args) {
      final var car = new Car();
      // final var battery = car.getEngineRoom().getBattery(); // ← これ
      final var battery = car.getBattery(); // ← こうする手がある
    }
    
[/code]

上のコードの正しさ的なところは緩く見てください。


CC BY-SA 4.0
2020-08-17T10:50:54.980
69630
2020-08-17T13:23:14.950
2020-08-17T13:23:14.950
19110
41455
question
java
オブジェクト指向における呼び出しが連続する状態のことを何と言う？


`car.getEngineRoom().getBattery();`

の書き方は、`メソッドチェーン`です。

> 別クラスを得るためにあるクラスから参照を重ね続けるような方法・現象

と書かれていますが、別クラスに限った話ではなくて、自分自身を返すメソッドの場合もあります。

チェーンの最後に呼び出されるメソッドも必ずしもインスタンスを返さないといけないという決まりはありません。

このようにメソッドを連続させることを`メソッドチェーン`といいます。

プログラムの美しさ的には下記のような意味合いがあります。

[流れるようなインタフェース](https://bliki-ja.github.io/FluentInterface/)

> そこで彼がとあるインターフェースのスタイルについて語ったのだが、 我々はそれを「流れるようなインターフェース（fluent
> interface）」と名づけることにした。 一般的なスタイルではないが、もっと評価されるべき代物だ。
> おそらく例を示したほうがいいだろうから、そうしてみることにする。

> 以下は上記と同じつなぎ合わせを、流れるようなスタイルで行っている。

コード引用:

[code]

    private void makeFluent(Customer customer) {
         customer.newOrder()
                 .with(6, "TAL")
                 .with(5, "HPK").skippable()
                 .with(3, "LGV")
                 .priorityRush();
    }
    
[/code]

* * *

このようにメソッドを連続させる書き方をよく目にするようになったときに `メソッドチェーン`
という用語を目にして、なるほど、そういう名前かと思ったものです。同じ頃 `流れるようなインターフェース`
という言葉も目にしましたが、こちらは、あまり浸透しなかったように思います。


CC BY-SA 4.0
2020-08-17T11:04:14.133
69631
2020-08-17T11:36:47.947
2020-08-17T11:36:47.947
9008
9008
69630
answer