将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用:当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
当构造过程必须允许构造对象有不同的表示时。
工厂模式:构造一个产品
抽象工厂:构造一系列产品
生成器:构造一个复杂的产品
public class Builder {
class BenZCar{
}
//部件生产及出厂产品抽象类
interface CarBuilder{
void makeWheel(); //造车轮
void makeGlass(); //造玻璃
void makeChair(); //造椅子
//....
BenZCar getBenZCar();
}
//部件生产及出厂产品实现类
class BenZCarBuilder implements CarBuilder{
BenZCar benZCar = new BenZCar();
//返回产品
public BenZCar getBenZCar() {
return benZCar;
}
public void makeChair() {
System.out.println("make chair...");
}
public void makeGlass() {
System.out.println("make glass...");
}
public void makeWheel() {
System.out.println("make wheel...");
}
}
//封装各部件
class CarDirector{
CarBuilder carBuilder = null;
public CarDirector(CarBuilder carBuilder){
this.carBuilder = carBuilder;
}
public void assembling(){
carBuilder.makeChair();
carBuilder.makeGlass();
carBuilder.makeWheel();
//.....
System.out.println("assembling success...");
}
}
public static void main(String[] args){
Builder builder = new Builder();
CarBuilder carBuiler = builder.new BenZCarBuilder();
CarDirector carDirector = builder.new CarDirector(carBuiler);
carDirector.assembling();
BenZCar benZCar = carBuiler.getBenZCar();
}
}