[Java]メソッドチェーンを使えるクラスを実装する

こんにちは!
土鍋(@donabe_lifelog)です!

今回は、メソッドチェーンに関する実装について書いていきたいと思います。

メソッドチェーンとは

簡単に言うと、メソッド同士をチェーンのように繋げて実装することができるものとなります。
わかりやすいところでいうとStringBuilderなんかがそうですかね。
例えば、以下のようなクラスがあったとします。

public class Person {

	private String lastName;
	private String firstName;

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getFullName() {
		return this.lastName + " " + this.firstName;
	}
}

このクラスのパラメータに値をセットする場合、以下のような実装になるかと思います。

Person person = new Person();
person.setLastName("田中");
person.setFirstName("太朗");
System.out.println(person.getFullName());

変数名が冗長な気がするし、もっと簡単に書けるような気もしますね。

一方で、以下のようなクラスの場合はどうでしょう。

public class Person {

	private String lastName;
	private String first;

	public Person lastName(String lastName) {
		this.lastName = lastName;
		return this;
	}
	public Person firstName(String firstName) {
		this.first = firstName;
		return this;
	}
	public String fullName() {
		return lastName + " " + first;
	}
}

最初のケースと同じことをやろうとした場合、以下のような実装になるかと思います。

System.out.println(new Person().lastName("田中").firstName("太朗").fullName());

非常にスッキリしましたね!
これが一番のメリットだと個人的には思っています。

ここだけ書いてしまうと、ただただ便利じゃん!と思われるかも知れませんが使用方法についてはプロジェクトの関係や周辺の実装による部分も大きくなると思いますので、状況に応じて使っていただくのが良いかと思います。

以上です!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です