建造者模式是一步一步创建一个比较复杂的对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的创建过程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。
本例以组装一台电脑为例,电脑有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();