1. 程式人生 > 其它 >設計模式中的構建模式builder

設計模式中的構建模式builder

構建模式將一個複雜的物件分離構建。

public interface TerrainBuilder {

    public ComplxBuilder buildWall();
    public ComplxBuilder buildFort();
    public AllBuilder build();

}

public class ComplxBuilder implements TerrainBuilder{

    AllBuilder allBuilder=new AllBuilder();
    @Override
    public ComplxBuilder buildWall() {
        allBuilder.setW(
new Wall(10,20,30,45)); return this; } @Override public ComplxBuilder buildFort() { allBuilder.setF(new Fort(20,30,40,50)); return this; } @Override public AllBuilder build() { return allBuilder; } } public class AllBuilder { private Wall w;
private Fort f; public Wall getW() { return w; } public void setW(Wall w) { this.w = w; } public Fort getF() { return f; } public void setF(Fort f) { this.f = f; } public AllBuilder() { } @Override public String toString() {
return "AllBuilder{" + "w=" + w + ", f=" + f + '}'; } } public class Wall { private int x; private int y; private int z; private int v; public Wall() { } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public int getZ() { return z; } public void setZ(int z) { this.z = z; } public int getV() { return v; } public void setV(int v) { this.v = v; } public Wall(int x, int y, int z, int v) { this.x = x; this.y = y; this.z = z; this.v = v; } } public class Fort { private int x; private int y; private int z; private int v; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public int getZ() { return z; } public void setZ(int z) { this.z = z; } public int getV() { return v; } public void setV(int v) { this.v = v; } public Fort() { } public Fort(int x, int y, int z, int v) { this.x = x; this.y = y; this.z = z; this.v = v; } } public class main { public static void main(String[] args) { TerrainBuilder builder=new ComplxBuilder(); AllBuilder t=builder.buildWall().buildFort().build(); System.out.println(t.toString()); } }