4章ラムダ式で設計する
デザインはどう見えるか、何を感じるかだけではない。デザインとは、どのように機能するかである。
――Steve Jobs
オブジェクト指向プログラミング(OOP)はデファクトスタンダードになりましたが、ラムダ式がJavaに追加されたことによってこれまでとは異なる設計のトリックを新たに手に入れました。Javaにおいて、OOPと関数型プログラミングは互いに補完でき、うまく相互作用するようになりました。
インタフェース、クラス階層、匿名内部クラスを簡潔なコードに置き換えることができます。つまり、同じ作業をより少ない量のコードで実現でき、新しいアイデアを素早く試すことができるのです。
本章では、ラムダ式が巧妙なデザインアイデアに生命を与えます。これまではオブジェクトを使用していた箇所を軽量関数で代用できます。本章では、まず機能からロジックを簡単に分離し拡張をより簡単にするためにラムダ式を使用します。続いて、ラムダ式を使ったわずか数行のコードで責任の委譲を行い、Decoratorパターンを実装します。最後に、冗長なインタフェースを流暢で直感的なインタフェースに変身させます。
4.1 ラムダ式を使った関心の分離
コードの再利用のためにクラスを生成することは良い心がけですが、それが常に正しい選択であるとは言えません。クラスの代わりに高階関数を使うことで、クラス階層を必要とせずに同じことが達成できるのです。
4.1.1 デザイン問題の探究
関心の分離という設計思想の説明を行うために、資産額を合計するという例から始めます。最初にこの例をイテレーションで構築します。この設計では複数の関心事が1つのメソッドに混在していますが、後にこのメソッドを、混合体ではなく、結合体にリファクタリングします。まずは ...
Get Javaによる関数型プログラミング ―Java 8ラムダ式とStream now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.