什么是建造者模式
Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
实现步骤
我们以建造房子为例,来说明建造者模式
- 首先我们需要房子,新建一个House实体类
public class House {
private String floor;
private String wall;
private String housetop;
public String getFloor() {
return floor;
}
public void setFloor(String floor) {
this.floor = floor;
}
public String getWall() {
return wall;
}
public void setWall(String wall) {
this.wall = wall;
}
public String getHousetop() {
return housetop;
}
public void setHousetop(String housetop) {
this.housetop = housetop;
}
@Override
public String toString() {
return "House [floor=" + floor + ", housetop=" + housetop + ", wall=" + wall + "]";
}
}
- 然后我们需要一个房子建造者,但是它只确定需要建造什么。所以我们新建一个接口
public interface HouseBuilder {
public void makeFloor();
public void makeWall();
public void makeHouseTop();
public House getHouse();
}
- 接下来需要确定建造什么样的房子,所以创建一个类来继承上面的接口,并实现方法。
public class PingFangBuilder implements HouseBuilder {
House house = new House();
@Override
public void makeFloor() {
house.setFloor("平房地板");
}
@Override
public void makeHouseTop() {
house.setHousetop("平房房顶");
}
@Override
public void makeWall() {
house.setWall("平房墙");
}
@Override
public House getHouse() {
return house;
}
}
- 然后再创建一个负责实行建造的类,用来运行上面实现的方法
public class HouseDirector {
private HouseBuilder builder;
public HouseDirector (HouseBuilder builder){
this.builder = builder;
}
public void makeHouse(){
builder.makeFloor();
builder.makeHouseTop();
builder.makeWall();
}
}
- 最后,在main方法中调用HouseBuilder和HouseDirector来获取house对象。
public class MainClass {
public static void main(String[] args) {
HouseBuilder houseBuilder = new PingFangBuilder();
HouseDirector houseDirector = new HouseDirector(houseBuilder);
houseDirector.makeHouse();
House house = houseBuilder.getHouse();
System.out.println(house.toString());
}
}