Skip to content

Instantly share code, notes, and snippets.

@AdelinGhanaem
Last active June 27, 2017 08:50
Show Gist options
  • Select an option

  • Save AdelinGhanaem/fae568cd695612d50dbf9e29275b683d to your computer and use it in GitHub Desktop.

Select an option

Save AdelinGhanaem/fae568cd695612d50dbf9e29275b683d to your computer and use it in GitHub Desktop.
public abstract class House {
protected Floor floor;
protected Walls walls;
protected Roof roof;
//getters and setters
}
public abstract class HouseBuilder {
protected House house;
protected Floor floor;
protected Walls walls;
protected Roof roof;
public abstract House createHouse();
public abstract Floor createFloor();
public abstract Walls createWalls();
public abstract Roof createRoof();
}
public class HouseClient {
public static void main(String[] args) {
HouseDirector director = new HouseDirector();
HouseBuilder woodBuilder = new WoodBuilder();
BrickBuilder brickBuilder = new BrickBuilder();
// Build a wooden house
House woodHouse = director.construcHouse(woodBuilder);
System.out.println();
// Build a brick house
House brickHouse = director.construcHouse(brickBuilder);
}
}
public class HouseDirector {
public House construcHouse(HouseBuilder builder) {
House house = builder.createHouse();
System.out.println(house.getRepresentation());
house.setFloor(builder.createFloor());
System.out.println(house.getFloor().getRepresentation());
house.setWalls(builder.createWalls());
System.out.println(house.getWalls().getRepresentation());
house.setRoof(builder.createRoof());
System.out.println(house.getRoof().getRepresentation());
return house;
}
}
public class WoodBuilder extends HouseBuilder {
public Floor createFloor() {
floor = new WoodFloor();
return floor;
}
public House createHouse() {
house = new WoodHouse();
return house;
}
public Roof createRoof() {
roof = new WoodRoof();
return roof;
}
public Walls createWalls() {
walls = new WoodWalls();
return walls;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment