Я пытаюсь закодировать шаблон для лучшего понимания. В основном я опирался на GOF и википедию. Поэтому мой Объект - это дом с необходимой областью атрибутов и некоторыми дополнительными атрибутами (такими как окна, двери, комнаты и т. Д.). Я покажу вам код. Я не совсем уверен, правильно ли это, и думаю, что у меня нет директора? Я не понимаю, в каких случаях он вам нужен и как он работает.
Это мой классный дом и внутренний класс HouseBuilder
public class House {
//required
private final String area;
//optional
private int windows;
private int doors;
private int rooms;
//constructor with HouseBuilder
private House(HouseBuilder builder) {
this.windows = builder.windows;
this.doors = builder.doors;
this.rooms = builder.rooms;
}
public static class HouseBuilder {
//required
private String area;
//optional
private int windows;
private int doors;
private int rooms;
//constructor with required attributes
HouseBuilder(String area) {
this.area = area;
}
//optional attributes
public HouseBuilder windows(int windows) {
this.windows = windows;
return this;
}
public HouseBuilder doors (int doors) {
this.doors = doors;
return this;
}
//function for building
public Housebuild() {
return new House(this);
}
}
Теперь я только что получил демоверсию класса, где яМожно построить такой дом:
House house = new House.HouseBuilder("Downtown")
.doors(3).windows(2).build();
Но это не директор, как в книгах. Правильна ли моя идея? И почему это лучше, чем просто использование сеттеров?
Спасибо!