将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(ps:简单理解隐藏内部的建造过程和细节,方便创建复杂的对象)
public class BananaBuilder implements FruitBuilder {
private Fruit fruit;
@Override
public void createFruit() {
this.fruit = new Fruit("香蕉") ;
}
@Override
public void buildColor() {
this.fruit.setColor("红色");
}
@Override
public void buildShape() {
this.fruit.setShape("圆形");
}
@Override
public Fruit getFruit() {
return fruit;
}
}
public class AppleBuilder implements FruitBuilder {
private Fruit fruit;
@Override
public void createFruit( ) {
this.fruit= new Fruit("苹果") ;
}
@Override
public void buildColor() {
this.fruit.setColor("蓝色");
}
@Override
public void buildShape() {
this.fruit.setShape("椭圆形");
}
@Override
public Fruit getFruit() {
return fruit;
}
}
public class Soul {
public Fruit createFruit(FruitBuilder fruitBuilder){
fruitBuilder.createFruit();
fruitBuilder.buildColor();
fruitBuilder.buildShape();
return fruitBuilder.getFruit();
}
}
public class Main {
public static void main(String[] args) {
Soul soul = new Soul();
//苹果
System.out.println("生产了:" + soul.createFruit(new AppleBuilder()));
System.out.println("----------------------------------------");
//香蕉
System.out.println("生产了:" + soul.createFruit(new BananaBuilder()));
}
}
建造者模式与工厂模式类似,但是建造者模式能应对更加复杂的创建过程。