Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >设计模式(四) 建造者模式

设计模式(四) 建造者模式

作者头像
乐百川
发布于 2022-05-05 12:03:26
发布于 2022-05-05 12:03:26
24400
代码可运行
举报
运行总次数:0
代码可运行

建造者模式和工厂模式类似,也是一种创建型模式。它们的主要区别在于:工厂模式需要提供一些信息,而对象在最后一步才创建,而建造者模式则是一步一步的创建对象。

一个非常典型的建造者的例子是Java中的StringBuilder,通过一步一步的添加字符串,最后构造不可变的String对象。

当我们要创建的对象本身内部结构比较复杂,或者当配件的组合非常多的时候,就可以考虑使用建造者模式。

直接看代码吧。首先我们需要一些配件类。在这里是饮料、调料盒主食。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface Drink {
    String getInfo();
}

public interface Spice {
    String getInfo();
}

public interface Staple {
    String getInfo();
}

然后是使用这些配件的类,也就是饭菜。一般来说这个类比较复杂,不容易一次性生成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Meal {
    private Drink drink;
    private Spice spice;
    private Staple staple;

    public void setDrink(Drink drink) {
        this.drink = drink;
    }

    public void setSpice(Spice spice) {
        this.spice = spice;
    }

    public void setStaple(Staple staple) {
        this.staple = staple;
    }

    void showMeal() {
        System.out.println(staple.getInfo() + ":" + spice.getInfo() + ":" + drink.getInfo());
    }
}

最后是建造者类,建造者负责一步一步的构造最终的类。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MealBuilder {
    private Meal meal;

    public MealBuilder() {
        meal = new Meal();
    }

    public MealBuilder addSpice(Spice spice) {
        meal.setSpice(spice);
        return this;
    }

    public MealBuilder addStaple(Staple staple) {
        meal.setStaple(staple);
        return this;
    }

    public MealBuilder addDrink(Drink drink) {
        meal.setDrink(drink);
        return this;
    }

    public Meal build() {
        return meal;
    }
}

最后我们来使用一下建造者类。这里用lambda表达式简化了一些子类的创建。以后如果需要其他的饭菜组合,也可以非常方便的生成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MealBuilder builder = new MealBuilder();
builder.addDrink(() -> "啤酒");
builder.addSpice(() -> "辣椒");
builder.addStaple(() -> "炸鸡");
Meal meal = builder.build();
meal.showMeal();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java进阶篇设计模式之三 ----- 建造者模式和原型模式
在上一篇中我们学习了工厂模式,介绍了简单工厂模式、工厂方法和抽象工厂模式。本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式。
格姗知识圈
2019/07/19
3230
04-04-设计模式 建造者模式
房子有各式各样的, 比如普通房, 高楼, 别墅, 过程虽然一样, 要是要求不要相同的
彼岸舞
2022/05/28
2280
04-04-设计模式 建造者模式
23设计模式之 --------- 建造者模式
建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
默 语
2024/11/20
1080
23设计模式之 --------- 建造者模式
详解设计模式:建造者模式
建造者模式(Builder Pattern)也叫做生成器模式,是 GoF 的 23 种设计模式的一种,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
栗筝i
2022/12/02
3580
设计模式 - 建造者模式
建建:这场疫情啊,让我明白了,有一个房子,能让你稳定住所;有一辆车,能让你出行无忧。
子乾建建-Jeff
2020/06/29
3570
设计模式 - 建造者模式
设计模式——建造者模式
设计模式——建造者模式
Java架构师必看
2021/05/14
4390
设计模式——建造者模式
Java设计模式:建造者模式详解
建造者模式(Builder Pattern)是一种创建型设计模式,其核心思想是通过将复杂对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式提供了一种灵活的方式来构建复杂对象,从而提高代码的可读性和可维护性。
科技新语
2024/11/15
1610
Java设计模式:建造者模式详解
深入理解建造者模式 ——组装复杂的实例
Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_Guide
用户2164320
2018/06/14
7370
深入理解建造者模式 ——组装复杂的实例
【设计模式】之建造者模式
建造者模式属于创建型模式的一员,可以控制对象的实例化过程。 建造者模式简化了复杂对象的实例化过程。 建造者模式的经典定义如下:
青山师
2023/05/05
1960
【设计模式】之建造者模式
八、建造者模式 ( Builder Pattern )
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象
botkenni
2022/09/07
2650
八、建造者模式 ( Builder Pattern )
创造型模式——建造者模式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-62yPpr1p-1611366486459)(https://www.runoob.com/wp-content/uploads/2014/08/20201015-builder-pattern.svg)]
栗筝i
2022/12/01
2210
Java设计模式学习笔记—建造者模式
文章最后“Java设计模式笔记示例代码整合”为本系列代码整合,所有代码均为个人手打并运行测试,不定期更新。本节内容位于其Builder包(package)中。
WindCoder
2018/09/20
4600
Java设计模式学习笔记—建造者模式
Java设计模式(四)之创建型模式:建造者模式
Builder:抽象建造者。它声明为创建一个Product对象的各个部件指定的抽象接口。 ConcreteBuilder:具体建造者,实现Builder抽象接口,构建和装配各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。 Director:指挥者。构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。 Product:产品角色。表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
全栈程序员站长
2021/04/09
5360
Java设计模式(四)之创建型模式:建造者模式
设计模式之建造者模式
作为一名码农,最难得的应该就是找对象了,就算勉强找到了,要是对人家不好,人家可就离你远去了。所以要对人家好点,学会做饭,多弄几个花样出来,让生活充满新鲜感,小两口的感情也会越来越深了。
AI.NET 极客圈
2019/07/19
5490
什么是建造者模式,来这篇文章让你彻底通透——针对设计模式的建造者模式
假设我们需要建造房子,虽然无论什么样的房子的建造的大体过程都是差不多的,但是细节上还是有一些不一样的。
@派大星
2023/06/28
2360
什么是建造者模式,来这篇文章让你彻底通透——针对设计模式的建造者模式
Java设计模式-建造者模式 理论代码相结合
继工厂模式后的建造者模式,也是java中常常能够见到的模式一种,应用场景也比较广,比较好用。 大家想了解的话,一起来看一看啦。😁 很喜欢一句话:“八小时内谋生活,八小时外谋生存” 你好,如果喜欢,请一起坚持!! 望别日与君相见时,君已有所成。 共勉 先看看图舒缓心情。😁 (我才不会告诉你我是一名喜欢蓝天白云大海的小小博主😀 ) Java设计模式-建造者模式 理论代码相结合 一、建造者模式 1)概念: 2)使用场景: 3)角色: 4)解释: 二、代码实例 2.1、题目 2.2、类图
宁在春
2022/10/31
2480
Java设计模式-建造者模式 理论代码相结合
Java设计模式(四)Builder建造者模式
一、场景描述 建造者模式同工厂模式、抽象工厂模式一样,用于创建继承类对象。 工厂模式:http://www.cnblogs.com/mahongbiao/p/8618970.html 抽象工厂模式:http://www.cnblogs.com/mahongbiao/p/8619054.html 所不同的是,工厂模式下,各子类实现接口,通过工厂类创建子类对象;而建造者模式下,各子类拥有其建造者类,通过它创建不同的父类对象,最终实现多态,实际上子类、父类在代码中是不存在的。 以仪器数据采集工具为例,工厂模式下,
用户1637609
2018/04/12
1.1K0
Java设计模式(四)Builder建造者模式
建造者模式【建造者模式设计模式】
指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。
高大北
2022/06/14
4710
设计模式(三)建造者模式Builder(创建型)
在软件开发的过程中,当需要创建一个复杂对象时,该对象由多个子部件按一定算法组合而成,例如计算机(对象)是由 CPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的,采购员不可能自己去组装计算机,而是将计算机的配置要求告诉计算机销售公司,计算机销售公司安排技术人员去组装计算机,然后再交给要买计算机的采购员。由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。
黄规速
2022/04/14
3210
设计模式(三)建造者模式Builder(创建型)
通俗易懂设计模式解析——建造者模式
  在本篇文章中,我们重点介绍建造者模式(Builder Pattern),建造者模式顾名思义,与建造创建相关。事实也是如此建造者模式也是创建型中的一种。在我们平常生活中会有比较复杂的东西的组成过程。比如电脑组成、手机组成、电视组成、等等。就拿电脑组成来说。可以由主板、Cpu、显卡等等组成。但是组成的算法步骤是一样的。只是不同的东西组装起来结果不一样而已。
小世界的野孩子
2019/09/11
3620
通俗易懂设计模式解析——建造者模式
相关推荐
Java进阶篇设计模式之三 ----- 建造者模式和原型模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验