什么是创建者模式(Builder Pattern)
创建者模式使用多个简单对象一步一步构成一个复杂对象。这种类型的模式属于创建型模式,建造者模式将复杂产品的构建过程封装在不同的方法中,使得创建过程非常清晰,能够让我们更加精确的控制复杂产品对象的创建过程,同时它隔离了复杂产品对象的创建和使用,使得相同的创建过程能够创建不同的产品。
建造者模式的组成部分
builder:为创建一个产品对象的各个部件指定抽象接口。
ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
Director:构造一个使用Builder接口的对象。
Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
实现示例:
模拟建房子
1.定义房子
public class House {
private Stringbasic;
private Stringwall;
private Stringroof;
public String getBasic() {
return basic;
}
public void setBasic(String basic) {
this.basic = basic;
}
public String getWall() {
return wall;
}
public void setWall(String wall) {
this.wall = wall;
}
public String getRoof() {
return roof;
}
public void setRoof(String roof) {
this.roof = roof;
}
@Override
public String toString() {
return "House{" +
"basic='" +basic +'\'' +
", wall='" +wall +'\'' +
", roof='" +roof +'\'' +
'}';
}
}
2.定义建造房子的接口
public interface IBuildHouse {
void buildBasic();
void buildWall();
void buildRoof();
House create();
}
3.定义创建房子的实现类
public class BuildHouse implements IBuildHouse {
private Househouse;
public BuildHouse(){
house =new House();
}
@Override
public void buildBasic() {
house.setBasic("建造地基");
}
@Override
public void buildWall() {
house.setWall("建造墙壁");
}
@Override
public void buildRoof() {
house.setRoof("建造屋顶");
}
@Override
public House create() {
return house;
}
}
4.定义创建类
public class HouseBuilder {
public House build(IBuildHouse buildHouse){
buildHouse.buildBasic();
buildHouse.buildWall();
buildHouse.buildRoof();
return buildHouse.create();
}
}
5.创建调用的客户端
public class Client {
public static void main(String[] args) {
House house =new HouseBuilder().build(new BuildHouse());
}
}