Builder pattern
Effective Java second editionを読み始めたのですが、何だか良いですね。これは。
で、Java素人の私は色々目から鱗なのですが、最初の方に載っていたBuilderパターンが格好良かったので、思い出しながら書き直してみました。
class Foo { private final int age; private final String name; private final String phone; private final String email; static class Builder { private int age; private String name; private String phone; private String email; public Builder age(int age) { this.age = age; return this; } public Builder name(String name) { this.name = name; return this; } public Builder phone(String phone) { this.phone = phone; return this; } public Builder email(String email) { this.email = email; return this; } public Foo build() { return new Foo(this); } } private Foo(Builder builder) { this.age = builder.age; this.name = builder.name; this.phone = builder.phone; this.email = builder.email; } public String toString() { return "age=" + age + " name=" + name + " phone=" + phone + " email=" + email; } } public class Bar { public static void main(String argv[]) { Foo foo = new Foo.Builder().age(56).name("Dark Programmer"). phone("090-1234-5678").email("dark@programmer.com"). build(); System.out.println(foo); } }
komamitsu@onion:~/lab/java/EJ$ java Bar age=56 name=Dark Programmer phone=090-1234-5678 email=dark@programmer.com
Effective Javaと平行して、昔適当に買ってたデザパタ本も読んでいるのだけど、こんなに格好良くないんだよなぁ。味も素っ気もないというか。
一人一人が、それぞれのBuilder patternを心の中に持っている、ということなのかしら。