本文介绍了建造者模式并附有java代码实现demo。内容仅供参考使用,有不足之处请及时指出,也欢迎大家交流探讨。
建造者模式
建造者模式是创建型模式的一种,其隐藏了构建对象的具体过程。
场景
假设你需要一座房子,而建造房子需要很多流程,很多工作,但你并不需要关心这些,你只需将你想要的房子告诉承包商即可,承包商会将房子建设好。这种场景可以使用建造者模式。
示例
假设房子由地基,框架,墙体,顶部构成。
public class House {
private String base;
private String frame;
private String wall;
private String top;
public String getBase() {
return base;
}
public void setBase(String base) {
this.base = base;
}
public String getFrame() {
return frame;
}
public void setFrame(String frame) {
this.frame = frame;
}
public String getWall() {
return wall;
}
public void setWall(String wall) {
this.wall = wall;
}
public String getTop() {
return top;
}
public void setTop(String top) {
this.top = top;
}
@Override
public String toString() {
return "House{" +
"base='" + base + '\'' +
", frame='" + frame + '\'' +
", wall='" + wall + '\'' +
", top='" + top + '\'' +
'}';
}
}
房子建造抽象类
abstract class HouseBuilder {
protected House house = new House();
public abstract void buildBase();
public abstract void buildFrame();
public abstract void buildWall();
public abstract void buildTop();
}
平房建造类
public class BungalowHouseBuilder extends HouseBuilder {
@Override
public void buildBase() {
house.setBase("平房地基");
}
@Override
public void buildFrame() {
house.setFrame("平房框架");
}
@Override
public void buildWall() {
house.setWall("平房墙体");
}
@Override
public void buildTop() {
house.setTop("平房顶部");
}
}
别墅建造类
public class VillaHouseBuilder extends HouseBuilder {
@Override
public void buildBase() {
house.setBase("别墅地基");
}
@Override
public void buildFrame() {
house.setFrame("别墅框架");
}
@Override
public void buildWall() {
house.setWall("别墅墙体");
}
@Override
public void buildTop() {
house.setTop("别墅顶部");
}
}
房屋建造导演类
public class HouseBuildDirector {
private HouseBuilder houseBuilder;
public HouseBuildDirector(HouseBuilder houseBuilder) {
this.houseBuilder = houseBuilder;
}
public House buildHose() {
houseBuilder.buildBase();
houseBuilder.buildFrame();
houseBuilder.buildWall();
houseBuilder.buildTop();
return houseBuilder.house;
}
}
告知承包商建造一座平房。
BungalowHouseBuilder bungalowHouseBuilder = new BungalowHouseBuilder();
HouseBuildDirector houseBuildDirector = new HouseBuildDirector(bungalowHouseBuilder);
House house = houseBuildDirector.buildHose();
System.out.println(house.toString());
输出
House{base='平房地基', frame='平房框架', wall='平房墙体', top='平房顶部'}
建造者模式结构
建造者模式主要分为Builder和Director两大模块。
Builder负责构建各个模块。
Director负责组建各个模块。
网友评论