一、什么是建造者模式
Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
二、建造者模式的结构
三、建造者模式应用场景
- 对象的创建:Builder模式是为对象的创建而设计的模式
- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象
- 关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法
四、附代码:
4.1 pojo
package com.lxy.pojo;
public class House {
private String wall;
private String floor;
private String houseTop;
public String getWall() {
return wall;
}
public void setWall(String wall) {
this.wall = wall;
}
public String getFloor() {
return floor;
}
public void setFloor(String floor) {
this.floor = floor;
}
public String getHouseTop() {
return houseTop;
}
public void setHouseTop(String houseTop) {
this.houseTop = houseTop;
}
}
4.2 普通建房子接口
package com.lxy.service;
import com.lxy.pojo.House;
public interface HouseBuilder {
void floor();
void houseTop();
void wall();
House getHouse();
}
4.3 实现建房子接口,还要建学校
package com.lxy.service;
import com.lxy.pojo.House;
public class SchoolBuilder implements HouseBuilder {
private House house=new House();
@Override
public void floor() {
house.setFloor("学区房---地板");
}
@Override
public void houseTop() {
house.setHouseTop("学区房--房顶");
}
@Override
public void wall() {
house.setWall("学区房--墙");
}
@Override
public House getHouse() {
return house;
}
}
4.4 创建一个创建者,我们只需要传一个对象,让帮我们创建,否则,我们每次都要调用它的创建方法;4.5的测试案例一目了然
package com.lxy.service;
public class BuilderCreater {
public void makeHouse(HouseBuilder houseBuilder){
houseBuilder.floor();
houseBuilder.wall();
houseBuilder.houseTop();
}
}
4.5 测试案例
package com.lxy.service;
import com.lxy.pojo.House;
public class Client {
public static void main(String[] args) {
SchoolBuilder schoolBuilder = new SchoolBuilder();
BuilderCreater builderCreater = new BuilderCreater();
builderCreater.makeHouse(schoolBuilder);
House house = schoolBuilder.getHouse();
System.out.println(house.getFloor());
System.out.println(house.getHouseTop());
System.out.println(house.getWall());
}
}