質問: car.getBattery(); // ← こうする手がある } ``` 上のコードの正しさ的なところは緩く見てください。
回答: `car.getEngineRoom().getBattery();` の書き方は、`メソッドチェーン`です。 > > 別クラスを得るためにあるクラスから参照を重ね続けるような方法・現象 > > > と書かれていますが、別クラスに限った話ではなくて、自分自身を返すメソッドの場合もあります。 チェーンの最後に呼び出されるメソッドも必ずしもインスタンスを返さないといけないという決まりはありません。 このようにメソッドを連続させることを`メソッドチェーン`といいます。 プログラムの美しさ的には下記のような意味合いがあります。 流れるようなインタフェース > > そこで彼がとあるインターフェースのスタイルについて語ったのだが、 我々はそれを「流れるようなインターフェース(fluent interface)」と名づけることにした。 一般的なスタイルではないが、もっと評価されるべき代物だ。 おそらく例を示したほうがいいだろうから、そうしてみることにする。 > > > > > 以下は上記と同じつなぎ合わせを、流れるようなスタイルで行っている。 > > > コード引用: ``` private void makeFluent(Customer customer) { customer.newOrder() .with(6, "TAL") .with(5, "HPK").skippable() .with(3, "LGV") .priorityRush(); } ``` このようにメソッドを連続させる書き方をよく目にするようになったときに `メソッドチェーン` という用語を目にして、なるほど、そういう名前かと思ったものです。同じ頃 `流れるようなインターフェース` という言葉も目にしましたが、こちらは、あまり浸透しなかったように思います。