Builder パターン
MyMain
public class MyMain {
public static void main(String args[]) {
MyBuilder builder = new MyBuilder();
MyDirectorA dirA = new MyDirectorA();
MyClass myclass = dirA.createMyClass(builder);
System.out.println(myclass.getDateOfBirth());
MyDirectorB dirB = new MyDirectorB();
myclass = dirB.createMyClass(builder);
System.out.println(myclass.getDateOfBirth());
}
}
MyClass
public class MyClass {
private String dateOfBirth;
public MyClass(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getDateOfBirth() {
return dateOfBirth;
}
}
MyBuilder
public class MyBuilder {
private String dateOfBirth;
public MyBuilder() {
dateOfBirth = "";
}
public void addYear() {
dateOfBirth += "yyyy";
}
public void addMonth() {
dateOfBirth += "mm";
}
public void addDay() {
dateOfBirth += "dd";
}
public void addDelimiter() {
dateOfBirth += "/";
}
public MyClass getMyClass() {
MyClass result = new MyClass(dateOfBirth);
dateOfBirth = "";
return result;
}
}
MyDirectorA
public class MyDirectorA {
public MyClass createMyClass(MyBuilder builder) {
builder.addYear();
builder.addDelimiter();
builder.addMonth();
builder.addDelimiter();
builder.addDay();
return builder.getMyClass();
}
}
MyDirectorB
public class MyDirectorB {
public MyClass createMyClass(MyBuilder builder) {
builder.addMonth();
builder.addDelimiter();
builder.addDay();
builder.addDelimiter();
builder.addYear();
return builder.getMyClass();
}
}
実行結果
L:\>java MyMain
yyyy/mm/dd
mm/dd/yyyy