はじめに
インフラの分野でも、Iac化が進んで行くと考えています。そこで、ノウハウが体系だっているものが学び易いと考えて、Javaを学びはじめました。
今回は、インターフェース にフォーカスしました。
ラムダ式を使って Algorithm
インターフェースを実装し、Service
クラスに設定して処理を実行するケースで、インターフェースの使い方を整理してみました。
perform
メソッドを定義。
interface Algorithm {
void perform(String name); // メソッド定義
}
setLogic
メソッドでロジックを設定し、doProcess
メソッドで処理を実行。
class Service {
private Algorithm logic; // Algorithm型のインスタンスを保持
// setLogicメソッドでロジックを設定
public void setLogic(Algorithm logic) {
this.logic = logic;
}
// doProcessメソッドで処理を実行
public void doProcess(String name) {
System.out.println("start"); // 処理の開始を表示
this.logic.perform(name); // ロジックの実行
System.out.println("end"); // 処理の終了を表示
}
}
Main
クラスで、ラムダ式を使って Algorithm
インターフェースを実装。このラムダ式は、name
を受け取って "hello, "
と結合して表示。その後、Service
クラスのインスタンスを作成し、ロジックを設定して処理を実行。
public class Main {
public static void main(String[] args) {
// Lambda式を使ってAlgorithmインターフェースを実装
Algorithm algorithm = (name) -> {
System.out.println("hello, " + name);
};
// Serviceインスタンスを作成
Service s = new Service();
s.setLogic(algorithm); // ロジックをセット
s.doProcess("Lambda"); // "Lambda"という名前を渡して処理実行
}
}
実行結果
start
hello, Lambda
end
複数の異なるアルゴリズムを設定したい場合
Algorithm
インターフェースを使って異なるロジックを定義し、切り替えることができる。
public class Main {
public static void main(String[] args) {
// 1つ目のロジック
Algorithm algorithm1 = (name) -> {
System.out.println("hello, " + name);
};
// 2つ目のロジック
Algorithm algorithm2 = (name) -> {
System.out.println("goodbye, " + name);
};
// Serviceインスタンスを作成
Service s = new Service();
// 最初のロジックを設定して実行
s.setLogic(algorithm1);
s.doProcess("Lambda");
// 2番目のロジックを設定して実行
s.setLogic(algorithm2);
s.doProcess("Lambda");
}
}
実行結果
start
hello, Lambda
end
start
goodbye, Lambda
end
Service
クラスに設定する Algorithm
を切り替えることで、処理を柔軟に変更することができますね。