建造者模式

来源:互联网 发布:java编写验证身份证号 编辑:程序博客网 时间:2024/06/15 22:02

建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,即固定流程,忽视细节。
通常包括四种角色:
1. Builder:为创建一类产品对象的各个部件指定抽象接口。
2. ConcreteBuilder:具体创建类,实现Builder接口,细节。
3. Director:使用Builder接口的对象,固定流程。
4. Product:产品。
下面是创建不同牌子的车的事例:

class Car {    // 大致分为 车身 和 车轮 两部分    String body;    String wheel;    ...    // 省略 setter、getter}interface CarBuilder {    void createBody();    void createWheel();    Car createCar();}class ACarBuilder implements CarBuilder {     Car car;    public ACarBuilder(){        car = new Car();    }    public void createBody(){        car.setBody("A车的车身");    }    public void createWheel(){        car.setWheel("A车的车轮");    }    public Car createCar(){        return car;    }}class BCarBuilder implements CarBuilder {    Car car;    public BCarBuilder(){        car = new Car();    }    public void createBody(){        car.setBody("B车的车身");    }    public void createWheel(){        car.setWheel("B车的车轮");    }    public Car createCar(){        return car;    }}class Director {    // 在这里,只需关注建造的顺序,不需要关注每一个部分是怎么建造的    public Car createCar(CarBuilder builder){        builder.createBody();        builder.createWheel();        return builder.createCar();    }}public class Main {    public static void main(String args[]){        Director director = new Director();        Car carA = director.createCar(new ACarBuilder());        System.out.println("车身:" + carA.getBody());        System.out.println("车轮:" + carA.getWheel());        Car carB = director.createCar(new BCarBuilder());        System.out.println("车身:" + carB.getBody());        System.out.println("车轮:" + carB.getWheel());    }}