建造者模式

建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,即固定流程,忽视细节。
通常包括四种角色:
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());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值