LoginSignup
5

More than 5 years have passed since last update.

デザインパターン #7 〜Builder〜

Posted at

第7回目 Builderパターン

概要

Builder パターンは、同じ作成過程で異なる表現形式の結果を得るためのパターンです。

サンプル

Director.java
public class Director {
    private Builder builder;
    public Director(Builder builder) {
        this.builder = builder;
    }
    public void construct() {
        builder.setName(YamadaTaro");
        builder.setAge(18);
    }
}
Builder.java
interface Builder {
    public abstract void setName(String name);
    public abstract void setAge(int age);
    public abstract People getResult();
}
PeopleBuilder.java
public class PeopleBuilder implements Builder {
    private People people = new People();
    public void setName(String name) {
        people.setName(name);
    }
    public void setAge(int age) {
        people.setAge(age);
    }
    public People getResult() {
        return people;
    }
}
People.java
public class People {
    private String name;
    private int age;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
}
Main.java
public class Main {
    public static void main(String[] args){
        Builder builder = new PeopleBuilder();
        Director director = new Director(builder);
        director.construct();
        People people = director.getResult();
        System.out.println(people.getName());
        System.out.println(people.getAge());
    }
}

結果

Yamada
18

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5