(5)设计模式之建造者模式(创建型模式)

Java设计模式学习总结(5)——创建型模式之建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作... 阅读详情

声明:以下都是博主浅薄的经验之谈,欢迎大家学习交流

  • 先看类图

这里写图片描述

  • 客户端代码
    • Main.java
public class Main {

    public static void main(String[] args) {
        /**引入建造者模式的场景**/
        /**1.客户端创建房子最普通方式是如下,如果每次要创建不同的房子的话,就必须类似这样进行创建*/
        /**缺点:客户端的代码要不断的动,不利于维护**/
        House house = new House();
        house.setFloor("普通地板");
        house.setWall("普通墙");
        house.setRoof("普通房顶");
        House h1 = new House();
        h1.setFloor("中等地板");
        h1.setWall("中等墙");
        h1.setRoof("中等房顶");
        /**2.增加了一个建造房子的工程队**/
        /**缺点:**/

        HouseBuilder commonBuilder = new CommonBuilder();
        commonBuilder.makeFloor();
        commonBuilder.makeRoof();
        commonBuilder.makeWall();
        House h2 = commonBuilder.getHouse();
        System.out.println(h2);

        /**3.增加一个管理者(指导工程队进行设计)【引入建造者模式】**/
        /**对于后期如果要创建一个中等房子的话,只需要实现houseBuilder接口,创建出一个     
        MediumBuilderm,交给designer即可**/
        /**分离了在客户端代码中去创建不同类别的House对象,代码数量动得少了**/
        Designer designer = new Designer();
        HouseBuilder builder = new CommonBuilder();
        designer.designHouse(builder);
        House h3 = builder.getHouse();
        System.out.println(h3);
        ///
        HouseBuilder mediumBuilder = new MediumBuiler();
        designer.designHouse(mediumBuilder);
        House h4 = mediumBuilder.getHouse();
        System.out.println(h4);

    }


}
  • House.java
public class House {
    private String floor;
    private String wall;
    private String roof;
    public String getFloor() {
        return floor;
    }
    public void setFloor(String floor) {
        this.floor = floor;
    }
    public String getWall() {
        return wall;
    }
    public void setWall(String wall) {
        this.wall = wall;
    }
    public String getRoof() {
        return roof;
    }
    public void setRoof(String roof) {
        this.roof = roof;
    }
    @Override
    public String toString() {
        return "House [floor=" + floor + ", wall=" + wall + ", roof=" + roof + "]";
    }

}
  • HouseBuilder.java
public interface HouseBuilder {
    public void makeFloor();
    public void makeRoof();
    public void makeWall();
    public House getHouse();
}
  • CommonBuilder.java
public class CommonBuilder implements HouseBuilder{
    private House house = new House();
    @Override
    public void makeFloor() {
        house.setFloor("普通地板");
    }

    @Override
    public void makeRoof() {
        house.setRoof("普通房顶");
    }

    @Override
    public void makeWall() {
        house.setWall("普通墙壁");
    }
    /**
     * 得到房子
     * @return
     */
    public House getHouse(){
        return house;
    }

}
  • MediumBuiler.java
public class MediumBuiler implements HouseBuilder {
    private House house = new House();
    @Override
    public void makeFloor() {
        house.setFloor("中等地板");
    }

    @Override
    public void makeRoof() {
        house.setRoof("中等房顶");
    }

    @Override
    public void makeWall() {
        house.setWall("中等墙");
    }

    @Override
    public House getHouse() {
        return house;
    }

}
  • Designer.java
/**
 * 描述:设计者里管理工程队来进行建造房子
 */
public class Designer {

public void designHouse(HouseBuilder houseBuilder){
    houseBuilder.makeFloor();
    houseBuilder.makeRoof();
    houseBuilder.makeWall();
}
}

声明:以上都是博主浅薄的经验之谈,欢迎大家学习交流

excel一二三维数据插值 excel一、二、三维插值 来吧,给个好评吧,谢谢...... 立即下载

相关推荐

Python实现二维曲线拟合的方法

今天小编就为大家分享一篇Python实现二维曲线拟合的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Java设计模式之建造者模式(生成器模式)

建造者模式: 也叫生成器模式。用来隐藏复合对象的创建过程,他把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。 总结一句就是封装一个对象的构造过程,并允许按步骤构造。 产品: public class House{ private String floor; private String wall; ...

Enough1988的博客 232

机器学习第五章之决策树模型

机器学习专题系列

wangyutao12345的博客 5185

python 排序统计滤波器_这里有一份Python习题集,赶紧来测测吧

本文整理了Python数据分析中经常出现的一些经典习题,并为每个习题提供了参考代码。详细的解答可关注微信公众号Python资源分享,回复xtda即可免费获取。(建议大家尝试自主实现,简单测试一下自己的Python水平!只有实在不会的时候再参考提供的答案。)习题 1习题 2编写程序判断某一年份是闰年还是平年。年份由用户通过键盘输入,运行效果如图。(闰年的标准:能被4整除,但是不能被100整...

weixin_32183107的博客 969

QT绘制饼图+柱状图+折线图

使用qt绘制,折线图,饼图,柱状图,多柱状图

梅山 3878

过程挖掘(Process Mining)1——始于颜值

下周开始每周1-2篇的过程挖掘分享 过程挖掘是什么? 过程挖掘与过程管理的关系? 过程挖掘与数据挖掘的关系? 管理学还是计算机科学?

hyhy12580的博客 6236

python用符号计算检验多维数组的计算

python用符号计算检验多维数组的计算 import sympy as sym import numpy as np a111,a112,a121,a122,a211,a212,a221,a222=sym.symbols('a111,a112,a121,a122,a211,a212,a221,a222') A=[[[a111,a112],\ [a121,a122]],\ [[a211,a212],\ [a221,a222]]] A=np.array(A) A1=A[0] Vect

lijil168的专栏 258

树莓派入门教程 - 0 - 准备篇 - 0.0 SD卡制作树莓派系统镜像启动盘 开机

电脑需要提前安装的工具: sd卡格式化工具SDFormatter,官网下载链接:https://www.sdcard.org/downloads/formatter/ 镜像烧录工具Win32 Disk Imager,官网下载链接:https://win32diskimager.download/ 使用到的硬件: 一张容量大于等于16GB的TF卡 + 读卡器; 树莓派板卡。3B、3B+、4B等各型号均可,带有 HDMI接口即可。 HDMI接口的显示屏。 鼠标、键盘、电脑。 1....

Mark_md的博客 6972

D5:C#设计模式之四建造者模式(Builder Pattern)【创建型】

一、引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern。在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一个复杂的物品,它主要是由CPU、主板、硬盘、显卡、机箱等组装而成的。手机当然也是复杂物品,由主板,各种芯片,RAM 和ROM 摄像头之类的东西组成。但是无论是电脑还是手机,他们的组装过程是固定的...

. 561

芯片硅前验证技术与驱动工程师实战指南

硅前验证是芯片开发流程中的关键环节,通过pre-silicon simulation等技术手段在流片前验证设计正确性。其核心技术包括软件仿真、FPGA原型验证和硬件仿真器解决方案,涉及Linux驱动开发、芯片架构理解和波形分析等核心技能。作为连接芯片设计与系统集成的桥梁,硅前验证能早期发现设计缺陷,节省数百万美元流片成本。以Cadence Palladium为代表的硬件仿真器,通过专用服务器系统实现比纯软件方案快100-1000倍的仿真速度,为驱动工程师提供完整的外设模型验证环境。掌握硅前验证技术可显著提升

weixin_42522857的博客 323

条件DDPM:Diffusion model的第三个巅峰之作

前言:DDPM从2020年诞生,短短一年的时间,模型上有两个巨大的改进,其中一个就是condition的引入,最近大部分DDPM相关的论文都会讨论这一点,有些文章称之为latent variable。和当年GAN的发展类似,CGAN和DCGAN的出现极大程度上促进了GAN的发扬光大,意义重大。本文基于前面几篇文章继续聊一聊: 从VAE到Diffusion Model_沉迷单车的追风少年-优快云博客 为什么diffusion model扩散模型可以称为score-based models?_沉迷单车的.

沉迷单车的追风少年 1万+

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

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

胖子胖子大胖子的博客 1212

点云数据生成DEM,并导出三维模型

点云数据生成DEM,并导出三维模型

qq_42540466的博客 2万+

【设计模式-2.5】创建型——建造者模式

【设计模式-2.5】创建型——建造者模式

小何的博客 1148

用 OP-TEE 给 AI 模型“上锁”:密文存储、TEE 解密放行、推理后销毁(实战可落地)

本文提出一种基于OP-TEE的AI模型保护方案,通过两级密钥体系确保模型静态存储为密文,运行时仅在TEE内解密。方案采用KEK+DEK架构,DEK永不出TEE,支持分块解密与可验证擦除。该方案能有效防御静态分析、应用层逆向等威胁,但需承认其物理级攻击的局限性。文章详细描述了端到端架构、文件格式设计及TA实现要点,包括密钥管理、分块解密策略和销毁机制,为设备侧AI部署提供了工程可行的安全解决方案。

Interview_TC的博客 289

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[设计模式-创建型模式5种-04建造者模式]

[设计模式-创建型模式5种-04建造者模式(常用)]

m0_61164038的博客 141

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

GO设计模式——5、建造者模式(创建型)

建造者模式在创建复杂对象时非常有用,特别是当对象的构建过程涉及多个步骤或参数时。3、指挥者(Director):是构建一个实用Builder接口的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。(ConcreteBuilder):实现Builder接口,构造和装配各个部件。(Builder):是为创建一个Product对象的各个部件指定的抽象接口。与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。

Gloming__zxy的博客 838

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

定义: 建造者模式(Builder Pattern),  将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类型:创建型模式。 类图:   参与角色: Product,定义了一组产品的部件,并且有一个方法来表示对象。Builder,提供一系列Product对象每个部件构成的接口。BuilderA、BuilderB通过实现父类的接口来完成产

飞鹤的程序员人生 953

【c++设计模式07】创建型5:创建者模式(Builder Pattern)

建造者设计模式是一种创建型设计模式,它允许你按照步骤构造复杂对象。该模式将对象的构建过程与其表示相分离,使得同样的构建过程可以创建不同的表示。

junxuezheng的博客 1047

设计模式复习笔记 (5)创建型模式:建造者模式

模式定义: 建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。模式动机: 无论是在现实世界中还是在软件系统中,都存在一

qq_33303925的博客 396

《设计模式》5.建造者模式(创建型)

package com.designpatterns.builder; import lombok.Data; import lombok.ToString; import net.sf.cglib.beans.BeanCopier; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.common...

johnjoe's blog 182

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

指挥者类(Director):调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建(客户端一般只需要与指挥者进行交互)。具体建造者类(ConcreteBuilder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。抽象建造者类(Builder):这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的部件对象的创建。定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式与工厂模式区别。

益章的博客 281

【设计模式】【创建型5-4】【建造者模式】

我们可以隐藏构造细节。给外部提供简单的接口就能构建对象。builder 链式调用创建对象就是建造者模式的使用。可以在不同的构建过程中使用相同的建造者。构建复杂对象的时候使用 提高代码的可读性。如上 就是实际的使用。

SHI_IHS的博客 394

java设计模式中不属于创建型模式_Java设计模式(5)——创建型模式之建造者模式(Builder)...

一、概述概念将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。(与工厂类不同的是它用于创建复合对象)UML图主要角色抽象建造者(Builder)——规范建造方法与结果返还方法具体建造者(Concrter Builder)——实现抽象建造接口,给出具体建造并返还具体结果指导者(Director)——调用建造者,与客户端对接产品(Product)——具体产品二、实践很多时候,一些...

weixin_29343807的博客 500

Day02 - 设计模式 - 4.创建型模式 - 4.5 建造者模式

将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。

tang7mj的博客 850
上一篇: (4)设计模式之原型模式(创建型模式)
下一篇: (6)设计模式之策略模式(结构型模式)
yi博说
博客等级 码龄11年 20粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值