设计模式之Builder模式

Builder模式通过隐蔽构建细节,使用户可以无需了解具体实现,只需提供必要信息,就能创建符合预期的对象。该模式将构造过程和表示分离,提高了代码可读性和灵活性,但可能因隐蔽性导致结果与预期有偏差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

在平时开发或者开别人源码的时候,都会看到很多的Builder,它把构建的细节完全隐蔽起来,在用户不知道构建细节的情况下把一个对象创建了出来,就很像建房子一样,我们只需要提供材料、工钱和设计图,建设过程全部交由建设工程师做,你完全可以不用知道怎么做,最后一个跟设计图一样的房子就会出现在面前(当然需要时间)。

Builder模式

例子

//房子构建类
public class HourseBuilder {

    public double price;
    public String design;
    public String material;
    public String place;

    //必须要的参数放在构造函数初始化
    public HourseBuilder(String place) {
        this.place=place;
    }

    // 工钱
    public HourseBuilder price(double price) {
        this.price = price;
        return this;
    }

    // 设计图
    public HourseBuilder design(String design) {
        this.design = design;
        return this;
    }

    // 材料
    public HourseBuilder material(String material) {
        this.material = material;
        return this;
    }
    //竣工
    public Hoursebuilder(){
        return new Hourse(this);
    }
}


//房子类
public class Hourse{
    private double price;
    private String design;
    private String material;
    private String place;

    public Hourse(HourseBuilder builder){
        this.price=builder.price;
        this.design=builder.design;
        this.material=builder.material;
        this.place=builder.place;
    }
}


//客户端
    Hourse hourse=new HourseBuilder("中国")
                .price(2000000000)
                .design("复式")
                .material("材料")
                .builder();

以上便是Builder模式的简单使用方法,还可以使用一个专门存放参数的类,将传进来的参数封装在这个类中。

优点:客户端不必知道产品内部的细节,并且构建者之间是独立的,可在构建过程中进行细化。能够将一个复杂对象将构造和表示分离开。
缺点:由于构建过程是隐蔽的,所以有可能造成构建结果跟预想的有偏差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值