Wednesday, March 2, 2016

[Design Pattern] Builder

Java

class House{
         private String roof;
         ..................
         public House(Roof roof, Walls walls, Floors floors, Windows windows, Door door){
                    this.roof = roof,
                    ....
                    ...
         }
}

class HouseBuilder extends Builder(){
          private Roof roof = new DefaultRoof();
          private Walls walls = new DefaultWalls();
          private Floors floors = new Defaultfloors();
          private Windows windows =new DefaultWindows();
          private Door door = new DefaultDoor();
         
          public HouseBuilder with(Roof roof){
                       this.roof = roof;
                      return this;
          }
          public HouseBuilder with(Walls walls)
                       this.walls = walls;
                       return this;
          }
          .......
         .........
          public HouseBuilder with(Door door){
                       this.door = door;
                       return this;
          }         
         public House build(){
                       return new House(this.roof, ......., this.door);
         }
}

C++

class House{
public:
          House(Roof roof; Walls walls,......Door door):
                       _roof(roof),_walls(walls),....,_door(door){};
private:
         Roof _roof;
         .....
}


class HouseBuilder:public Builder{
public:
         HouseBuilder():_roof(Roof(Defalt)),....{};
         HouseBuilder with(Roof roof){_roof = roof;};
         ..............
        House build(){return House(.........)};
         
private:
         Roof _roof;
         ..... }

No comments:

Post a Comment