GOF23设计模式之 建造者模式

厚积薄发打卡Day31 :[kuangStudy] GoF23通俗易懂的设计模式之 <建造者模式> 前言: 视频教程:狂神说Java之通俗易懂的23种设计模式 什么是设计模式? 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。 它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的 解决方案==> 一种思维,一种态度,一种进步 1995年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软 件的基础》一书,共收录了23种设计模式,从此树立了软件设计模式领域的里程碑,人称 【GoF 阅读详情

场景:

  • 我们要建造一个复杂的产品。比如:神州飞船,iPhone 这个复杂的产品的创建有一个问题需要处理:装配这些子组件是不是有个步骤问题?
  • 实际开发中,我们所需要的对象构建时,也非常复杂,有很多步骤需要处理时。

建造模式的本质:

  • 分离了对象子组件的单独构造(由Builder来负责)和装配(由Derector负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程伏在的情况下使用。
  • 由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的解构器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。

开发中应用场景

  • StringBuilder的append方法
  • SQL 中的 PreparedStatement 方法
  • JDOM 中,DomBuilder、SAXBuilder

代码示例

  • AirShipBuilder
package com.coderbean.builder;
/**
 * 建造者接口
 * @author Chang
 *
 */
public interface AirShipBuilder {
    OrbitaModule builderOrbitaMoudule();
    Engine builderEngine();
    EscapeTower builerEscapeTower();

}
  • AirShipDirector
package com.coderbean.builder;
/**
 * 装配接口
 * @author Chang
 *
 */
public interface AirShipDirector {
    AirShip directAirShip();
}
  • MyAirShipBuilder
package com.coderbean.builder;

public class MyAirShipBuilder implements AirShipBuilder{

    @Override
    public OrbitaModule builderOrbitaMoudule() {
        System.out.println("构建我的轨道舱!");
        return new OrbitaModule("我的轨道舱");
    }

    @Override
    public Engine builderEngine() {
        System.out.println("构建我的发动机");
        return new Engine("我的发动机");
    }

    @Override
    public EscapeTower builerEscapeTower() {
        System.out.println("构建我的逃生舱");
        return new EscapeTower("我的逃生舱");
    }

}
  • MyAirShipDirector
package com.coderbean.builder;

public class MyAirShipDirector implements AirShipDirector {

    private AirShipBuilder builder;




    public MyAirShipDirector(AirShipBuilder builder) {
        super();
        this.builder = builder;
    }



    @Override
    public AirShip directAirShip() {
        Engine e = builder.builderEngine();
        OrbitaModule o = builder.builderOrbitaMoudule();
        EscapeTower et = builder.builerEscapeTower();

        AirShip ship = new AirShip();
        ship.setEngine(e);
        ship.setEscapeTower(et);
        ship.setOrbitaModule(o);

        return ship;
    }

}
  • AirShip
package com.coderbean.builder;
/**
 * 宇宙飞船
 * @author Chang
 *
 */
public class AirShip {
    private OrbitaModule orbitaModule; //轨道舱
    private Engine engine; //发动机
    private EscapeTower escapeTower; //逃逸舱

    public void luanch(){
        System.out.println("发射!");
    }

    public OrbitaModule getOrbitaModule() {
        return orbitaModule;
    }
    public void setOrbitaModule(OrbitaModule orbitaModule) {
        this.orbitaModule = orbitaModule;
    }
    public Engine getEngine() {
        return engine;
    }
    public void setEngine(Engine engine) {
        this.engine = engine;
    }
    public EscapeTower getEscapeTower() {
        return escapeTower;
    }
    public void setEscapeTower(EscapeTower escapeTower) {
        this.escapeTower = escapeTower;
    }



}


class OrbitaModule{
    private String name;



    public OrbitaModule(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}

class Engine{
    private String name;

    public Engine(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

class EscapeTower{
    private String name;

    public EscapeTower(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}


  • Client
package com.coderbean.builder;

public class Client {

    public static void main(String[] args) {
        AirShipBuilder asb = new MyAirShipBuilder();
        MyAirShipDirector asd = new MyAirShipDirector(asb);
        AirShip as = asd.directAirShip();
        as.luanch();
        System.out.println(as.getEngine());
    }

}
2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml 本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。 阅读详情

相关推荐

TI DSP从COFF切换到EABI输出格式的5个关键修改点(TMS320F280025实测)

本文基于TMS320F280025实测,详细解析了TI DSP从COFF切换到EABI输出格式的5个关键修改点。核心差异在于EABI遵循ELF标准,涉及链接器优化、RAM数据共享、工具链升级、double数据类型位宽变化及链接器命令文件重构。迁移时需使用.retain指令防止关键数据被优化,利用NOINIT段保护共享RAM,并更新hex2000等工具,以确保BootLoader与应用程序稳定运行。

weixin_29189381的博客 265

Java GoF 23种设计模式-创建型模式-建造者模式(Builder Pattern)

文章目录一、模式定义二、模式动机三、模式结构四、代码实现 一、模式定义 建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式又可以称为生成器模式。 建造者模式是一种创建型设计模式, 它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是

WU4566285的博客 540

网课、网页视频倍速播放简单脚本

一个简单的网页视频倍速脚本

huazn612的博客 1万+

GOF23设计模式-创建型模式3-建造者模式

GOF23设计模式--建造者模式详解,宇宙飞船类建造示例

Tumbler 404

Pytorch中CrossEntropyLoss()详解

交叉熵主要是用来判定实际的输出与期望的输出的接近程度。举个例子:在做分类训练的时候,如果一个样本属于第 K 类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0,即 [0,0,1,0,….0,0] ,这个数组也就是样本的 Label,是神经网络最期望的输出结果。我们用交叉熵损失函数来衡量网络的实际输出与正确标签的差异,利用这种差异经过反向传播去更新网络参数。交叉熵:它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。

flyingluohaipeng的博客 3861

Keysight ADS新手必看:3分钟搞定TDR模拟的保姆级教程(附差分信号设置技巧)

本文为Keysight ADS新手提供TDR模拟的保姆级教程,详细介绍了从基础环境准备到差分信号设置的全流程。通过内置模板调用、待测器件连接和仿真结果解读,帮助用户快速掌握TDR模拟技术,特别包含差分信号配置技巧,提升信号完整性分析效率。

weixin_30872157的博客 195

GOF23种设计模式-建造者模式

建造者模式 盖房项目需求 需要建房子:这一过程为打桩、砌墙、封顶 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. 请编写程序,完成需求. 将产品和产品建造过程解耦 => 建造者模式. 建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 Product(产品角色): 一个具体的产品对象。 Builder(抽象建造者):

MARK19960120的博客 322

相似贴子推荐:基于 LangChain4j + Milvus 的混合检索实战

本文提出了一种基于LangChain4j和Milvus的混合检索方案,用于解决论坛社区中的相似帖子推荐问题。该方案结合稠密向量语义检索和BM25关键词检索的优势,通过RRF算法实现结果融合。系统采用bge-small-zh模型生成语义向量,利用Milvus 2.5+原生支持的BM25功能和混合搜索API,在百万级数据规模下实现50ms内的检索延迟,召回率和精确率分别提升15%和22%。文章详细介绍了从数据预处理、向量化到混合检索的完整实现流程,并探讨了进阶优化方向,为推荐系统和RAG应用提供了高效解决方案。

分享AI、区块链技术及应用,未来已来 88

GOF23设计模式之建造者模式

建造者模式,原理+代码

开心杨的个人博客 191

Win11更新导致TIA博途许可证出现问题的解决办法汇总

Win11更新导致TIA博途许可证出现问题的解决办法汇总

Robot_PLC_HMI_Automation 9890

基于摩尔线程 S80 显卡在 Ubuntu 系统下双卡交火部署 DeepSeek

curl -X POST -H "Content-Type: application/json" -d '{"prompt": "你的问题"}' http://localhost:11434/api/generate。curl -X POST -H "Content-Type: application/json" -d '{"prompt": "你的问题"}' http://localhost:11434/api/generate。- 为避免模型占用系统盘空间,可将模型存储路径修改到其他磁盘。

靡不有初,鲜克有终 1194

【GOF23设计模式】建造者模式

【GOF23设计模式】建造者模式 来源:http://www.bjsxt.com/一、【GOF23设计模式】建造者模式详解类图关系 建造飞船 1 package com.test.Builder; 2 3 public class AirShip { 4 private OrbitalModule orbi...

weixin_30902251的博客 107

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【GoF23种设计模式】01_建造者模式

GoF23种经典的开发设计模式。分为三大类:创建型模式、结构型模式和行为型模式。

weixin_48627356的博客 798

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

GOF23设计模式之建造者模式(builder)

一、建造者模式概述   建造者模式的本质:     1.分离了对象子组件的单独构造(由Builder负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的过程复杂的情况下使用。     2.由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法,装配算法...

dcpvpf6917的博客 256

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

实践GoF的23种设计模式:建造者模式

针对这种对象成员较多,创建对象逻辑较为繁琐的场景,非常适合使用建造者模式来进行优化。

华为云官方博客 1161

【Go实现】实践GoF的23种设计模式:建造者模式

在程序设计中,我们会经常遇到一些复杂的对象,针对这种对象成员较多,创建对象逻辑较为繁琐的场景,非常适合使用建造者模式来进行优化。

ruanrunxue的博客 357

GOF23种设计模式面试之建造者模式

建造者模式 ◆定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 用户只需指定需要建造的类型就可以得到它们,建造过程及细节不需要知道 ◆如果-个对象有非常复杂的内部结构(很多属性) ◆想把复杂对象的创建和使用分离 优点:封装性好,创建和使用分离 ◆扩展性好、建造类之间独立、一定程度上解耦 缺点:产生多余的Builder对象 产品内部发生变化,建造者都要修改,成本较大 建造者模式更注重方法的调用顺序,工厂模式更注重创建产品。 粒度不同:建造者模式,可以创造复杂的产品,而工厂模式创

u014792301的博客 316

设计模式之GOF23建造者模式

组件很多,装配顺序不定 本质: 1,分离了对象子组件的单独构造(Builder负责)和装配(Director负责),从而可以构造出复杂的对象,这个模式适用于某个对象的构建过程复杂的情况下使用 2,实现了构建和装配的解耦 /**建造者用来得到各个组件* @author 小帆敲代码**/public interface AirshipBuilde...

qq_44711190的博客 193

Gof23设计模式之建造者模式

建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

m0_55993923的博客 752

GOF23种设计模式之建造者模式

建造者模式 场景: 我们要建造一个复杂的产品。比如:神州飞船,Iphone。这个复杂的产品的创建。有这样一个问题需要处理: 装配这些子组件是不是有个步骤问题? 实际开发中,我们所需要的对象构建时,也非常复杂,有很多步骤需要处理时。 建造模式的本质: 分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构 造出复杂的对象。这个模式适用于:某个对象的构建过...

qq_44066201的博客 331

GOF23设计模式之建造者模式-Builder

建造者模式以及Lombok@Builder建造者模式概述类型:创建型设计模式适用场景:CodingUML优点:缺点:框架中的建造者模式拓展知识:Lombok 本文简单介绍建造者模式,以及介绍lombok@Builder实现原理。 建造者模式 概述 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 用户只需指定需要建造的类型就可以得到他们,建造过程及细节不需要知道 类型:创建型设计模式 适用场景: 如果一个对象有非常复杂的内部结构(很多属性) 想把复杂对象的创建和使用分离 C

zhengyong14350的博客 214

GOF的23种设计模式(4)—建造者模式

建造者模式 定义 构建一个复杂的产品时,需要解决“如何装配子组件”的问题。 分离了对象子组件的单独构建(Builder)和装配(Director),从而构造出复杂对象。 由于实现了构建和装配的解耦。不同的构建器、相同的装配,或者相同的构建器、不同的装配,都可以创建不同的对象。 建造者模式一般与工厂模式搭配,由工厂模式创建子组件,再有建造者模式装配。 优点 产品的建造...

Apandam的博客 597

设计模式GOF23——建造者模式

建造者模式

buyoufa的博客 459

GoF23种设计模式之创建型模式之建造者模式

一、概述         将一个复杂对象的构建与其表示分离开来,使得同样的构建过程可以创建不同的表示。 二、适用性 1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式的时候。 2.当构造过程必须允许被构造的对象有不同的表示的时候。 三、参与者 1.Builder:为创建一个Product对象的各个部件指定抽象接口。 2.ConcreteBuilder:实现Build

leverli的专栏 1862
上一篇: GOF23设计模式之 工厂模式
下一篇: GOF 23 设计模式之 原型模式(prototype) 深复制与浅复制举例
coderbean
博客等级 码龄11年 12粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值