java设计模式----建造者模式

来源:互联网 发布:新软件发布 编辑:程序博客网 时间:2024/06/05 15:17

分为四部分:产品角色,抽象构建者,具体构建者,指挥者


建造者模式:用户不需要知道具体的构造结构过程,只需要与指挥者进行沟通即可。指挥者根据不同的构建者得到不同的产品。构建者分装了整个产品的构建,是的产品能够完整的构建出来。


产品角色:

public class Car {    public List<String> parts = new ArrayList<String>();    public void addPart(String part){        this.parts.add(part);    }}

抽象构建者:

public interface Builder {    public void  addWheel();    public void  addLight();    public void  addFrame();    public void  getResult();}

具体构建者:

public class ConcreteBuilder1 implements Builder {    Car car = new Car();    @Override    public void addWheel() {        car.addPart("一般轮胎");    }    @Override    public void addLight() {        car.addPart("一般车灯");    }    @Override    public void addFrame() {        car.addPart("一般车架");    }    @Override    public void getResult() {        System.out.print("汽车装配了:");        for (String part : car.parts) {            System.out.print(part + " ");        }        System.out.println();    }}

public class ConcreteBuilder2 implements Builder{    Car car  = new Car();    @Override    public void addWheel() {        car.addPart("不锈钢轮胎");    }    @Override    public void addLight() {        car.addPart("卤素车灯");    }    @Override    public void addFrame() {        car.addPart("钢制车架");    }    @Override    public void getResult() {        System.out.print("汽车装配了:");        for (String part : car.parts) {            System.out.print(part + " ");        }        System.out.println();    }}

指挥者:

public class Director {    private Builder builder;    public Director( Builder builder){        this.builder = builder;    }    public void construct() {        builder.addWheel();        builder.addLight();        builder.addFrame();    }}

测试:

public class Test {    public static void main(String[] args){        ConcreteBuilder1 concreteBuilder1 = new ConcreteBuilder1();        Director director = new Director(concreteBuilder1);        director.construct();        concreteBuilder1.getResult();        ConcreteBuilder2 concreteBuilder2 = new ConcreteBuilder2();        director = new Director(concreteBuilder2);        director.construct();        concreteBuilder2.getResult();    }}

结果:

汽车装配了:一般轮胎 一般车灯 一般车架 汽车装配了:不锈钢轮胎 卤素车灯 钢制车架 


0 0
原创粉丝点击