屌丝有了钱只是用来花的,那得有些霸气一点的房子吧!
意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性:
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());
    }
}
原文地址:http://blog.csdn.net/fullstack/article/details/25467185