java23种设计模式(三) -- 建造者模式(创建型设计模式)

Java 中的 23 种设计模式详解 本文介绍了Java中的23种经典设计模式,主要分为三类:创建型、结构型和行为型模式。创建型模式关注对象创建方式,包括单例模式(确保唯一实例)、原型模式(复制创建)、建造者模式(分步构建复杂对象)和工厂方法模式(子类决定实例化)。文章详细阐述了每种模式的核心思想、实现方式、应用场景和优点,并提供了Java代码示例和注释,帮助开发者理解如何在实践中应用这些模式解决复杂设计问题。 阅读详情

建造者模式

简介

建造者模式主要解决的问题是在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的过程构成;由于需求的变化,这个复杂对象的各个部分经常面临着重大的变化,但是将它们组合在一起的过程却相对稳定。

结构

在这里插入图片描述

在这个示意性的系统里,最终产品Product只有两个零件,即part1和part2。相应的建造方法也有两个:buildPart1()和buildPart2()、同时可以看出本模式涉及到四个角色,它们分别是:

抽象建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此接口独立于应用程序的商业逻辑。模式中直接创建产品对象的是具体建造者 (ConcreteBuilder)角色。具体建造者类必须实现这个接口所要求的两种方法:一种是建造方法(buildPart1和 buildPart2),另一种是返还结构方法(retrieveResult)。一般来说,产品所包含的零件数目与建造方法的数目相符。换言之,有多少 零件,就有多少相应的建造方法。

具体建造者(ConcreteBuilder)角色:担任这个角色的是与应用程序紧密相关的一些类,它们在应用程序调用下创建产品的实例。这个角色要完成的任务包括:1.实现抽象建造者Builder所声明的接口,给出一步一步地完成创建产品实例的操作。2.在建造过程完成后,提供产品的实例。

导演者(Director)角色:担任这个角色的类调用具体建造者角色以创建产品对象。应当指出的是,导演者角色并没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者角色。

产品(Product)角色:产品便是建造中的复杂对象。一般来说,一个系统中会有多于一个的产品类,而且这些产品类并不一定有共同的接口,而完全可以是不相关联的。

代码示例

项目结构图

在这里插入图片描述
builders

/**
 * 套餐构造器,Builder角色
 */
public abstract class MealBuilder {
    public Meal meal = new Meal();
    
    public abstract void buildFood();
    
    public abstract void buildDrink();
    
    public Meal getMeal(){
        return meal;
    }
}

/**
 * 套餐A  实现抽象套餐类,ConcreteBuilder角色
 */
public class MealA extends MealBuilder {

    public void buildDrink() {
        meal.setDrink("一杯可乐");
    }

    public void buildFood() {
        meal.setFood("一盒薯条");
    }

}

/**
 * 套餐B  实现抽象套餐类,ConcreteBuilder角色
 */
public class MealB extends MealBuilder {

    public void buildDrink() {
        meal.setDrink("一杯柠檬果汁");
    }

    public void buildFood() {
        meal.setFood("三个鸡翅");
    }

}

director

/**
 * KFC的服务员  它决定了套餐是的实现过程,然后给你一个完美的套餐,Director角色
 */
public class KFCWaiter {

    private MealBuilder mealBuilder;
    
    public void setMealBuilder(MealBuilder mealBuilder) {
        this.mealBuilder = mealBuilder;
    }

    public Meal construct(){
        //准备食物
        mealBuilder.buildFood();
        //准备饮料
        mealBuilder.buildDrink();
        
        //准备完毕,返回一个完整的套餐给客户
        return mealBuilder.getMeal();
    }
}

product

/**
 * 套餐类,Product角色
 */
public class Meal {
    private String food;
    private String drink;

    public String getFood() {
        return food;
    }

    public void setFood(String food) {
        this.food = food;
    }

    public String getDrink() {
        return drink;
    }

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

测试类

public class ApiTest {

    @Test
    public void testCommodity() throws Exception {
        //服务员
        KFCWaiter waiter = new KFCWaiter();
        //套餐A
        MealA a = new MealA();
        //服务员准备套餐A
        waiter.setMealBuilder(a);
        //获得套餐
        Meal mealA = waiter.construct();

        System.out.print("套餐A的组成部分:");
        System.out.println(mealA.getFood()+"---"+mealA.getDrink());

        MealB b = new MealB();
        waiter.setMealBuilder(b);
        Meal mealB = waiter.construct();

        System.out.print("套餐B的组成部分:");
        System.out.println(mealB.getFood()+"---"+mealB.getDrink());
    }
}

在这里插入图片描述

小结

  1. 建造者模式是将一个复杂对象的创建过程给封装起来,客户只需要知道可以利用对象名或者类型就能够得到一个完整的对象实例,而不需要关心对象的具体创建过程。
  2. 建造者模式将对象的创建过程与对象本身隔离开了,使得细节依赖于抽象,符合依赖倒置原则。可以使用相同的创建过程来创建不同的产品对象。
23种设计模式-创建型模式 工厂方法模式(Factory Method Pattern)是创建型设计模式的一种,它提供了一种创建对象的最佳方式。在工厂方法模式中,对象的创建是通过调用一个工厂方法而不是直接调用构造器来完成的。这个工厂方法可以是指定的接口并由子类实现,或者是类的抽象方法。定义工厂方法模式定义了一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。涉及到的关键类或接口Product(产品角色):定义工厂方法所创建的对象的接口。ConcreteProduct(具体产品角色) 阅读详情

相关推荐

JAVA设计模式总结之23种设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

yeyuzhisheng的博客 1168

Java中的建造者模式(Builder Pattern)

Java中的建造者模式(Builder Pattern)

sanmansan的博客 2611

java23种设计模式!附源码

本文将详细介绍Java中常见的23种设计模式、应用场景、优缺点、代码示例。包括单例模式、工厂模式、建造者模式、原型模式、适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、代理模式、职责链模式、状态模式、策略模式、模板方法模式、观察者模式、迭代器模式、访问者模式、中介者模式、备忘录模式、解释器模式和享元工厂模式。通过了解这些设计模式,可以帮助我们更好地理解和应用面向对象编程的思想,提高代码的可重用性、灵活性和可维护性。

weixin_70044963的博客 1万+

JAVA设计模式之建造者模式详解

建造者模式(builder pattern), 也被称为生成器模式, 是一种创建型设计模式.定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。**建造者模式要解决的问题 **建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。

励志成为一名优秀的全能型软件开发工程师。 4281

Pytorch(一) Pytorch 的安装

安装步骤 1.检查是否有合适的GPU, 若有安装Cuda与CuDNN 2.下载pytorch安装文件,进行pytorch的安装 检查电脑是否有合适的GPU 在桌面上右击如果能找到NVIDA控制面板,则说明该电脑有GPU。控制面板如下,并通过查看系统信息获取支持的Cuda版本 点击 帮助->点击 系统信息 弹出下面的对话框,在驱动程序版本那一栏就能看到该计算机使用的驱动版本。 ...

开开心心 25万+

transformer优化(一)-UNeXt 学习笔记

​它在早期阶段使用卷积,在潜在空间阶段使用 MLP。通过一个标记化的 MLP 块来标记和投影卷积特征,并使用 MLP 对表示进行建模。 ​

PLANTTHESON的博客 2033

设计模式6——建造者模式(builder)

1,盖房项目需求 盖房项目需求 1) 需要建房子:这一过程为打桩、砌墙、封顶 2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. 3) 请编写程序,完成需求. 传统方式解决盖房需求 public abstract class AbstractHouse { //打地基 public abstract void bui...

苏云南雁的博客 840

基于Ansys Fluent 的颗粒分离/过滤解决方案

过滤是指通过特殊装置将颗粒移除,将流体提纯净化的过程。过滤的方式很多,应用的物系也很广泛,固-液、固-气、大颗粒-小颗粒等。

sh_djoin的博客 1852

【详解】JAVA设计模式建造者模式(Builder)

建造者模式是一种创建型设计模式,它允许你分步骤构建复杂的对象。这种模式的目的是将对象的构建过程与其表示分离,从而使相同的构建过程可以创建不同的表示。建造者模式通常用于当需要创建的对象具有多个属性,部分属性是必需的,而其他属性是可选的时候。通过使用建造者模式,我们可以避免大量的构造函数重载,并且可以使代码更加清晰和易于维护。// 私有构造函数return to;// 静态内部类,作为建造者首先,定义一个表示订单的产品类 ​​Order​。

牛肉胡辣汤 2500

LayaNative源码编译

修改好后的LayaNative2.0需要重新编译生成Android和iOS所需要的动态库文件。

末之 1358

Ansys Zemax与Speos协同设计:从HUD光学优化到驾驶环境可视化全流程解析

本文深入解析了如何利用Ansys Zemax与Speos进行协同设计,实现从HUD光学系统核心优化到驾驶环境可视化验证的全流程。文章强调了HUD设计是光学性能与视觉感知的深度耦合,通过Zemax进行精密光学设计,再利用Speos进行系统级仿真与感知模拟,最终完成从虚拟到现实的闭环验证,有效提升HUD产品的开发效率与可靠性。

weixin_29199873的博客 240

Java设计模式 —— 【创建型模式】建造者模式(Builder Pattern)详解

建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式;它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节;由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。

知唔猪的博客 3383

手把手教你学基带SOC芯片(4.4.9)--基带芯片的电源管理实例:高通 Snapdragon 系列实例(十)

Snapdragon 888 通过支持多种深度睡眠模式,如 AOAC 模式、低功耗模式和深度睡眠模式,以及智能电源管理技术,实现了对功耗的精细管理。这些模式不仅延长了设备的电池寿命,还确保了用户在各种使用场景下的良好体验。无论是保持网络连接、限制后台活动,还是完全关闭不必要的功能,Snapdragon 888 都能够灵活应对,提供高效的功耗管理方案。

MHD0815的博客 740

Java中23种设计模式的详细介绍

Java开发中23种设计模式详细介绍设计模式介绍设计模式分类设计模式六大原则开闭原则(Open Close Principle)里氏代换原则 设计模式介绍 设计模式(Design Patterns): 一套被反复使用,多数人知晓,经过分类编目,代码设计的总结 使用设计模式是为了可重用代码,让代码更容易理解,保证代码可靠性 项目中合理运用设计模式可以完美的解决很多问题,每种模式都有相应的原理...

攻城狮Chova的博客 1万+

AutoSAR系列讲解 - 前言

博主xyfx是一名汽车行业的嵌入式软件工程师,本职工作是同步电机的驱动控制(主要做FOC的,这个大家要是有兴趣,以后可以单独开一个专栏来讲解一下),由于做控制器的时候需要用到AutoSAR,所以特意的去学习了相关知识,同时博主自己也在同步提高中,有写的不合理的地方也请大家指正。我准备对AutoSAR开设两个大的方面来讲解,一是AutoSAR的入门篇,二是AutoSAR的实践篇,分别讲述AutoSAR的理论基础和工具的使用。

雪云飞星的博客 4万+

基于多传感器融合的智身四足机器狗楼梯环境SLAM系统设计与实现

本文设计了一种基于多传感器融合的四足机器狗楼梯环境SLAM系统。系统采用Jetson Orin NX为主控制器,集成RealSense D435i深度相机和Livox Mid360激光雷达,在ROS2框架下实现平面定位精度<5cm、楼梯环境下导航不漂移的目标。通过多层次传感器融合策略、运动学约束优化和状态切换机制,解决了楼梯环境下的定位累积误差问题,实现了平面与楼梯环境的自动识别切换及精度复位功能。硬件设计注重传感器布局优化和精确标定,软件架构采用分层设计,确保实时性能。该系统为四足机器人在复杂地形中

huanghm88的专栏 238

【23种设计模式】创建型模式详细介绍

本文为 【23种设计模式】创建型模式详细介绍 相关内容介绍,下边具体将对单例模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式,具体包括它们的特点与实现等进行详尽介绍~

小新要变强的博客 2775

WINCC7.3破解文件

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

Java23种设计模式(三):建造者模式

本文详细介绍了Java中的23种设计模式,分为创建型、结构型和行为型三大类。重点解析了建造者模式,通过三种实现方式(传统实现、链式调用和静态内部类)展示如何构建复杂对象,并对比了各自的优缺点和应用场景。创建型模式关注对象创建,结构型处理类和对象组合,行为型聚焦对象间通信。建造者模式通过分离构建过程和表示,提供了灵活的对象创建方案,适用于不同复杂度的对象构建需求。

Regetless的博客 1605

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

23种设计模式之创建型模型

23种设计模式之创建型模型

qq_48433464的博客 998

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java23种设计模式详解

提供了一种方式来封装一组具有相关联的或相互依赖的对象的创建。一个抽象工厂定义了一个接口,用于创建相关或依赖对象的家族,而实际的具体工厂则负责生成具体的对象。下面是一个使用Java实现的抽象工厂模式的简单示例:假设我们有一个图形应用程序,需要绘制不同类型的形状(如圆形、矩形等)和颜色填充策略(如红色、蓝色等)。每种形状都可以有不同的颜色填充,这就构成了两个相关的对象家族。// 抽象产品接口:形状// 具体产品:圆形@Override// 具体产品:矩形@Override。

2301_76508397的博客 3791

百日筑基第二十三天-23种设计模式-创建型总汇

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建(私有的构造器),这个类对外提供了唯一一种访问其实例的方式,对外只能够直接访问,不能实例化此类对象。例如,一台计算机上可以连接多台打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中只有一个打印程序的实例。

qq_45477639的博客 1952

Java23种设计模式——5.创建型模式之建造者模式

Java中除去有设计原则之外,还有23中设计模式。(设计模式我们主要来将思想和精髓的地方,除去Java还有其他的语言也可以适用) 这些模式都是前辈们一点一点积累下来,一直在改进,一直在优化的,这些设计模式可以解决一些特定的问题。 这些模式中,可以说是将语言的使用提现的淋漓尽致,我们今天要学习第五种设计模式,建造者模式! 建造者模式: 这个是创建型模式的最后一个模式,建造者模式 ...

胖子胖子大胖子的博客 1211

Java设计模式-创建型设计模式-建造者模式

Java设计模式-创建型设计模式-建造者模式

Fatter$hday的博客 1609

23种设计模式【创建型模式】详细介绍之【建造者模式】

设计模式。

『愚』的博客 971

全面解读Java的23种设计模式

需要注意的是,混合使用设计模式要谨慎,不要过度使用设计模式,以免代码过于复杂和难以维护。选择合适的设计模式和合适的组合方式,可以使代码更加简洁、高效和易于维护。

weixin_39158966的博客 3265

23种设计模式之创建型

目录一、设计模式二、总体分为三大类:三、Java的23种设计模式1.工厂方法模式(Factory Method)1.1普通工厂模式1.2多个工厂方法模式1.3静态工厂方法模式2、抽象工厂模式(Abstract Factory)3、单例模式(Singleton)4、建造者模式(Builder)5、原型模式 (Prototype) 一、设计模式 概念: 是一套被反复使用、多数人知晓的、经过分类编目的、...

今晚几点睡的博客 770
上一篇: java23种设计模式(二) -- 抽象工厂模式(创建型设计模式)
下一篇: java23种设计模式(四) -- 原型模式(创建型设计模式)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值