屌丝有了钱只是用来花的,那得有些霸气一点的房子吧!
意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性:
1、房子有不同的几个部分,能独立的安装
2、希望能建造出多个不同表象的房子
大家先看个类图
1.Builder
为创建一个Product对象的各个部件指定抽象接口。
2.ConcreteBuilder
实现Builder的接口以构造和装配该产品的各个部件。
定义并明确它所创建的表示。
提供一个检索产品的接口。
3.Director
构造一个使用Builder接口的对象。
4.Product
表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
现在要建的是房子House,有个喜欢的家。
package creatingtype.builder;
/*
* 房子
*/
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;
}
}
预定工程队(不同的工程队建不同的房子)
package creatingtype.builder;
/*
* 工程队
*/
public interface HouseBuilder {
//建造地板
public void makeFloor();
//建造墙
public void makeWall();
//建造屋顶
public void makeHousetop();
public House getHouse();
}
找个负责人
package creatingtype.builder;
public class HouseDirector {
public void makeHouse(HouseBuilder builder) {
//建造地板
builder.makeFloor();
//建造墙
builder.makeWall();
//建造屋顶
builder.makeHousetop();
}
}
负责人有了,如果你想建造别墅,确定别墅工程队
package creatingtype.builder;
/*
* 别墅工程队
*/
public class BieShuBuilder implements HouseBuilder {
House house = new House();
public void makeFloor() {
house.setFloor("别墅-->地板");
}
public void makeHousetop() {
house.setHousetop("别墅-->房顶");
}
public void makeWall() {
house.setWall("别墅-->墙");
}
public House getHouse() {
return house;
}
}
负责人有了,如果你想建造豪宅,确定豪宅工程队
package creatingtype.builder;
/*
* 豪宅工程队
*/
public class HaoZhaiBuilder implements HouseBuilder {
House house = new House();
public House getHouse() {
return house;
}
public void makeFloor() {
house.setFloor("豪宅-->地板");
}
public void makeHousetop() {
house.setHousetop("豪宅-->房顶");
}
public void makeWall() {
house.setWall("豪宅-->墙");
}
}
都好了,你可以开始修建自己想要的家了。
package creatingtype.builder;
// 建造者模式
public class MainClass {
// Builder模式也叫建造者模式或者生成器模式,
// 是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来
// 隐藏复合对象的创建过程,它把复合对象的创建
// 过程加以抽象,通过子类继承和重载的方式,动
// 态地创建具有复合属性的对象。
public static void main(String[] args) {
//工程队
HouseBuilder builder = new HaoZhaiBuilder();
//设计者
HouseDirector director = new HouseDirector();
director.makeHouse(builder);
House house = builder.getHouse();
System.out.println(house.getFloor());
System.out.println(house.getWall());
System.out.println(house.getHousetop());
}
}
就这么简单,豪宅好了,你也可以建别墅哦!