墨风如雪博客

  • 源码小店
  • 导航站
  • 登录
  • java
  • 资源分享
让AI使用变得如此简单
  1. 首页
  2. java
  3. 设计模式
  4. 正文

设计模式:建造者设计模式

2023年 5月 6日 152点热度 0人点赞 0条评论

建造者设计模式(Builder Design Pattern)是一种常见的软件设计模式,它将对象的创建过程和表示过程分离,通过一个建造者类来统一创建对象。建造者模式可以根据需要动态地创建对象,避免了直接在客户端代码中创建对象的过程,提高了代码的灵活性和可维护性。

原理

建造者设计模式的核心思想是:将对象的构建过程和表示过程分离,通过一个建造者类来统一创建对象。客户端只需要告诉建造者类需要创建哪种对象,建造者类就会根据客户端的需求动态地创建对象。

在建造者模式中,我们通常会定义一个产品类和一个建造者类。产品类包含了需要创建的对象属性,建造者类则负责创建产品对象并设置其属性值。同时,我们还可以定义一个指导者类,用于指导建造者类创建对象。

实现

建造者设计模式的实现通常包含以下几个角色:

  • 产品类(Product):包含需要创建的对象属性。
  • 抽象建造者类(Builder):定义了创建对象的方法和属性。
  • 具体建造者类(Concrete Builder):实现了抽象建造者类中定义的方法和属性。
  • 指导者类(Director):负责指导建造者类创建对象。

代码示例

下面是一个简单的建造者模式示例代码:

public class Product {
    private String partA;
    private String partB;
    private String partC;

    public void setPartA(String partA) {
        this.partA = partA;
    }

    public void setPartB(String partB) {
        this.partB = partB;
    }

    public void setPartC(String partC) {
        this.partC = partC;
    }

    // ...
}

public interface Builder {
    void buildPartA();
    void buildPartB();
    void buildPartC();
    Product getResult();
}

public class ConcreteBuilder implements Builder {
    private Product product = new Product();

    @Override
    public void buildPartA() {
        product.setPartA("PartA");
    }

    @Override
    public void buildPartB() {
        product.setPartB("PartB");
    }

    @Override
    public void buildPartC() {
        product.setPartC("PartC");
    }

    @Override
    public Product getResult() {
        return product;
    }
}

public class Director {
    public void construct(Builder builder) {
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
    }
}

上面的代码中,我们定义了一个产品类Product,一个抽象建造者类Builder,一个具体建造者类ConcreteBuilder和一个指导者类Director。在ConcreteBuilder中,我们实现了抽象建造者类中定义的方法和属性,用于创建产品对象。在Director中,我们通过指导者类来指导ConcreteBuilder创建对象。

使用

使用建造者模式时,客户端只需要调用建造者类的方法,就可以动态地创建所需的对象。下面是一个示例代码:

ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director();
director.construct(builder);
Product product = builder.getResult();

建造者设计模式的详细介绍和实现。建造者模式在实际开发中应用广泛,可以帮助我们更好地组织代码,提高系统的灵活性和可维护性。

spring当中的使用

Spring框架中使用建造者模式的地方较为常见,其中最典型的例子就是通过Builder模式来构建RestTemplate对象。

RestTemplateBuilder

RestTemplateBuilder是Spring框架中提供的一个用于构建RestTemplate对象的建造者类。通过RestTemplateBuilder,我们可以动态地构建RestTemplate对象,并设置其属性值,如连接超时时间、读取超时时间等。

代码示例

RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
RestTemplate restTemplate = restTemplateBuilder
        .setConnectTimeout(Duration.ofSeconds(10))
        .setReadTimeout(Duration.ofSeconds(10))
        .build();

上面的代码中,我们通过RestTemplateBuilder构建了一个RestTemplate对象,并设置了连接超时时间和读取超时时间。这样就实现了通过建造者模式来动态构建RestTemplate对象的功能。

RestTemplate对象是Spring框架中用于发送HTTP请求的核心类之一,通过使用RestTemplateBuilder,我们可以更加方便地构建RestTemplate对象,并设置其属性值,提高了系统的灵活性和可维护性。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: java 建造者 设计模式
最后更新:2023年 5月 6日

墨风如雪

一个热爱生活,热爱分享的程序员

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

墨风如雪

一个热爱生活,热爱分享的程序员

最新 热点 随机
最新 热点 随机
告别机械感!OpenAudio S1让AI声音活起来 Sora触手可及!微软必应AI视频生成器,全民创作时代来临? 阿里WebAgent开源:引领自主搜索新纪元 重磅炸弹!字节跳动开源BAGEL:70亿参数,统一多模态理解与生成,AI“全能王”诞生记! 小米MiMo-VL:7B参数,怎么就成了多模态界的“越级打怪王”? 炸裂!DeepSeek 8B 量化版降临:告别显存焦虑,你的 3080 Ti 也能玩转顶级大模型了!
AI圈炸锅了!Mistral Medium 3:性能 SOTA,成本打骨折,企业玩家的新宠?字节终于开源“扣子”同款引擎了!FlowGram:AI 时代的可视化工作流利器告别“微信黑箱”!Chatlog:让你的聊天记录也能拥有“AI大脑”!字节跳动 Seed-Coder-8B:不靠人工洗数据,这80亿参数的小模型如何写出顶尖代码?85倍速的视觉革命:苹果发布 FastVLM,让你的 iPhone ‘看图说话’,快到飞起!告别AI视频“变脸怪”!腾讯混元Hunyuan Custom重磅开源,主体一致性“王炸”来了!
Java学习必备:基础语法知识点梳理 王炸登场!Claude 4 Opus/Sonnet 全平台深度解析:不止聊天,AI真能‘肝’大项目了? 深入剖析TCP三次握手及其防护机制 炸裂登场!Qwen3:等了这一个月,开源AI新王带着“思考引擎”杀来了! java 消息队列框架ActiveMQ的(超详细总结) Spring 中循环依赖问题的产生原因及注意事项
标签聚合
动态规划 AI 算法 教程 java 设计模式 spring deepseek

COPYRIGHT © 2023 墨风如雪博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

免责声明 - 隐私政策