建造者模式是一步一步创建一个比较复杂的对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的创建过程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。
本例以组装一台电脑为例,电脑有CPU,硬盘,内存,当然还有其它的,本例只用这三个属性表示来组装一台电脑
代码如下 :
/**
 * 组装一台电脑,需要安装硬盘,CPU,和内存条
 * 一台电脑
 */
public class Computer {
    protected String HDD;       //硬盘
    protected String CPU;       //CPU
    protected String MEM;       //内存条
    public Computer(String hdd,String cpu,String memory){
        this.HDD = hdd;
        this.CPU = cpu;
        this.MEM = memory;
    }
    @Override
    public String toString() {
        return "HDD="+HDD+" CPU="+CPU+" MEM="+MEM;
    }
    /*
        内部有一个静态的ComputerBuilder类
        ComputerBuilder内部的属性和Computer中是一样的
        或者和Computer的子类中的属性是一样的
    */
    public static class ComputerBuilder{
        protected String HDD;       //硬盘
        protected String CPU;       //CPU
        protected String MEM;       //内存条
        //设置HDD
        ComputerBuilder setHDD(String hdd){
            this.HDD = hdd;
            return this;
        }
        //设置CPU
        ComputerBuilder setCPU(String cpu){
            this.CPU = cpu;
            return this;
        }
        //设置MEM
        ComputerBuilder setMEM(String mem){
            this.MEM = mem;
            return this;
        }
        //创建一个Computer
        Computer build(){
            return new Computer(this.HDD,this.CPU,this.MEM);
        }
    }
}使用
Computer computer = new ComputerBuilder().setCPU("core i7")
.setHDD("西部数据500G硬盘")
.setMEM("8G")
.build();
computer.toString();
