1、简介
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
2、原理及组成
3、实现
需要创建product复杂对象,Director只有通过传入不同的Builder来获取product方法,实现了导演和product
package com.designpattern.builder;
/**
* 笔 -- 抽象产品类
*/
public abstract class Pen {
/**笔芯**/
private String cartridge;
/**外壳**/
private String shell;
public String getCartridge() {
return cartridge;
}
public void setCartridge(String cartridge) {
this.cartridge = cartridge;
}
public String getShell() {
return shell;
}
public void setShell(String shell) {
this.shell = shell;
}
}
package com.designpattern.builder;
/**
* 抽象建造者 -- 笔builder
*/
public abstract interface PenBuilder {
/**
* 生产笔芯
*/
abstract void buildCartridge();
/**
* 生产外壳
*/
abstract void buildShell();
/**
* 组装笔
*/
abstract Pen buildPen();
}
package com.designpattern.builder.impl;
import com.designpattern.builder.BallpointPen;
import com.designpattern.builder.Pen;
import com.designpattern.builder.PenBuilder;
/**
* 建造者(具体) -- 圆珠笔builder
*/
public class BallpointPenBuilder implements PenBuilder{
Pen pen;
public BallpointPenBuilder(){
pen = new BallpointPen();
}
@Override
public void buildCartridge() {
pen.setCartridge("圆珠笔笔芯");
}
@Override
public void buildShell() {
pen.setShell("圆珠笔外壳");
}
@Override
public Pen buildPen() {
return pen;
}
}
package com.designpattern.builder;
/**
* 导演类 Director
*/
public class PenDirector {
public Pen constructPen(PenBuilder pen_builder){
//生产笔芯
pen_builder.buildCartridge();
//生产外壳
pen_builder.buildShell();
//组装笔
return pen_builder.buildPen();
}
}
package com.designpattern.builder;
import com.designpattern.builder.impl.BallpointPenBuilder;
import com.designpattern.builder.impl.BrushPenBuilder;
/**
* 测试
*/
public class Test {
public static void main(String[] args) {
PenDirector director = new PenDirector();
Pen ballpointpen = director.constructPen(new BallpointPenBuilder());
Pen brushpen = director.constructPen(new BrushPenBuilder());
}
}