teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追加

2020/11/30 02:00

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -19,4 +19,23 @@
19
19
 
20
20
  「処理の全体の流れを担当するクラス」とは、ラムダ式を実行するクラスのことですが、
21
21
  「具体的なアルゴリズムを担当するクラス」のほうはラムダ式そのものです。
22
- (Javaのラムダ式構文はRunnableインターフェースなど関数型インターフェースを実装した匿名クラスのインスタンスを生成する構文)
22
+ (Javaのラムダ式構文はRunnableインターフェースなど関数型インターフェースを実装した匿名クラスのインスタンスを生成する構文)
23
+
24
+ ---
25
+
26
+ > 「修正が加えられるたびに両方のコードを修正しなければいけません」の記載のイメージがつかず、わかりません。
27
+
28
+ 「処理の全体の流れを担当するクラス」が、内部で特定の「具体的なアルゴリズムを担当するクラス」を生成していた場合において、"両方"のコードを修正しないといけない状況はぶっちゃけ私も思いつきませんが、
29
+ 少なくとも、他のところで別の種類の「具体的なアルゴリズムを担当するクラス」を使いたくなったとき困りますね?
30
+
31
+
32
+ 例えば配列のソートをするクラスです。
33
+ ソートの基準(具体的なアルゴリズム)を、ソート(処理の全体の流れ)をするクラスと分けていても、
34
+ ソートの基準クラスをソートするクラスの内部で生成していたら、
35
+ ある場所では昇順、ある場所では降順、みたいにソートの基準を変えようと思ったら困りますね。
36
+
37
+ ソートするクラスに引数を渡して内部でswitch文か何かでどのソートの基準クラスのインスタンスを使うかを分ければできますが、それではソートの基準を新しく作るたびにソートクラス内部のswitch文に変更が及びます。
38
+
39
+ じゃあソートするクラスはインターフェース経由でソート基準を受け取れば万事解決で、
40
+ そのインターフェースはラムダ式登場以前はわざわざ自分で定義していたけど
41
+ ラムダ式登場以降はそれもしなくて良くなったって話かなと

1

追加

2020/11/30 02:00

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -19,4 +19,4 @@
19
19
 
20
20
  「処理の全体の流れを担当するクラス」とは、ラムダ式を実行するクラスのことですが、
21
21
  「具体的なアルゴリズムを担当するクラス」のほうはラムダ式そのものです。
22
- (Javaのラムダ式構文はRunnableインターフェースを実装した匿名クラスのインスタンスを生成する構文)
22
+ (Javaのラムダ式構文はRunnableインターフェースなど関数型インターフェースを実装した匿名クラスのインスタンスを生成する構文)