5、建造者模式、工厂模式与建造者模式对比

建造者模式是一种设计模式,它将对象的构建与表示分离,使得创建复杂对象的过程更加灵活。通过指挥者类,用户可以指定不同类型的建造者来创建具有不同特性的对象,如摩拜单车和ofo单车。这种模式在不暴露构造细节的情况下提供了可配置的构造过程。

1.概念

在这里插入图片描述
建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象 。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节 。

2、结构

在这里插入图片描述
在这里插入图片描述

3、例子

在这里插入图片描述
在这里插入图片描述

//自行车类 产品类
public class Bike {
    private String frame;
    private String seat;

    public String getSeat() {
        return seat;
    }

    public void setSeat(String seat) {
        this.seat = seat;
    }

    public String getFrame() {

        return frame;
    }

    public void setFrame(String frame) {
        this.frame = frame;
    }

    @Override
    public String toString() {
        return "Bike{" +
                "frame='" + frame + '\'' +
                ", seat='" + seat + '\'' +
                '}';
    }
}

//抽象建造者
public abstract class Builder {
    //得换成protected 子类才能用
    protected Bike bike=new Bike();

    public abstract void buildFrame();

    public abstract void buildSeat();

    public abstract Bike createBike();
}
//具体创建者类 摩拜单车
public class MobaBuilder extends Builder {
    @Override
    public void buildFrame() {
        bike.setFrame("炭纤维车架");
    }

    @Override
    public void buildSeat() {
        bike.setSeat("黄金座椅");
    }

    @Override
    public Bike createBike() {
        return bike;
    }
}

//具体创建者类 ofo单车
public class OfoBuilder extends Builder {
    @Override
    public void buildFrame() {
        bike.setFrame("铁车架");
    }

    @Override
    public void buildSeat() {
        bike.setSeat("铁座椅");
    }

    @Override
    public Bike createBike() {
        return bike;
    }
}

//指挥者类
public class Director {
    private Builder builder;

    public Director(Builder builder){
        this.builder=builder;
    }

    public Bike construct(){
        builder.buildFrame();
        builder.buildSeat();
        return builder.createBike();
    }
}

//测试类
public class Client {
    public static void main(String[] args) {
        Director director=new Director(new OfoBuilder());
        System.out.println(director.construct());
        //改为模拜的话,只需要在上面new Director传入就好
    }
}

4、优缺点

在这里插入图片描述

5、工厂模式与建造者模式对比

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值