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

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

Java 中的 23 种设计模式详解


设计模式是软件开发中的最佳实践,帮助开发者在面对复杂设计问题时提供有效的解决方案。GoF(Gang of Four)在其经典著作《设计模式:可复用面向对象软件的基础》中定义了 23 种设计模式。。本文将详细介绍23种经典设计模式,包括创建型模式、结构型模式和行为型模式,提供每种模式的定义、原理、优点、Java示例代码以及详细注释。

目的范围名称描述
创建型(Creational)对象单例模式(Singleton)保证一个类仅有一个实例:并提供一个访问它的全局访问点。
原型模式(Prototype)用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
建造者模式(Builder)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
抽象工厂模式(Abstract Factory)提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
类工厂方法模式(Factory Method)定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使个类的实例化延迟到其子类。
结构型(Structural)对象适配器模式(Adapter)将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化。
组合模式(Composite)将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
装饰模式(Decorator)动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活。
外观模式(Facade)运用共享技术有效地支持大量细粒度的对象。
享元模式(Flyweight)为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
代理模式(Proxy)为其他对象提供一个代理以控制对这个对象的访问。
类适配器模式(Adapter)将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
行为型(Behavioral)对象责任链模式(Chain of Responsibility)为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
命令模式(Command)将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
迭代器模式(lterator)提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。
中介者模式(Mediator)用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
备志录模式(Memento)在不破坏封装性的前提下,捕获一个对象的内部状态。
观察者模式(Observer)定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
状态模式(State)允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
策略模式(Strategy)定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
访问者模式(Visitor)表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
类解释器模式(Interpreter)给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
模板方法模式(Template Method)定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Iethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步。

创建型模式(Creational Patterns)


创建型模式关注于对象的创建,提供了更灵活的对象创建方式。

创建型模式分为单例模式(Singleton Pattern)、原型模式(Prototype Pattern)、建造者模式(Builder Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)

建造者模式(Builder Pattern)

问题:

在某些情况下,一个对象的创建过程非常复杂,涉及多个步骤,每个步骤都可能有不同的实现方式。如果将所有创建逻辑放在一个类中,会导致该类变得庞大且难以维护。此外,如果需要创建不同的变体对象,就需要在该类中添加更多的逻辑,使得代码变得混乱。

解决方案:

建造者模式提供了一种将一个复杂对象的构建过程与其表示分离的方法。它将对象的构建过程封装在一个独立的"建造者"类中,由该类负责逐步构建对象。这样,可以根据需要创建不同的建造者来构建不同的对象变体。通常,建造者模式涉及以下角色:

  • 产品(Product):表示正在构建的复杂对象。建造者模式的目标是构建这个产品。
  • 抽象建造者(Abstract Builder):定义了构建产品的步骤和方法,但没有具体的实现。不同的具体建造者可以实现不同的构建步骤,从而创建不同的产品变体。
  • 具体建造者(Concrete Builder):实现了抽象建造者定义的方法,完成了产品的构建过程。每个具体建造者负责构建特定的产品变体。
  • 指导者(Director):负责控制建造的过程。它通过将客户端与具体建造者分离,确保产品的构建是按照一定顺序和规则进行的。

效果:

建造者模式的效果包括:

  • 分离构建过程和表示:通过建造者模式,可以将复杂对象的构建过程与其最终表示分离,使得构建过程更加清晰可控。
  • 支持不同的表示:通过使用不同的具体建造者,可以创建不同的产品表示,而不改变客户端的代码。
  • 更好的可扩展性:如果需要添加新的产品变体,只需创建一个新的具体建造者即可,而无需修改已有的代码。
  • 隐藏产品的内部结构:客户端只需与抽象建造者和指导者交互,无需关心产品的内部构建细节。

总之,建造者模式适用于需要构建复杂对象,且构建过程涉及多个步骤或变体的情况。通过将构建过程分解为可重用的步骤,建造者模式提供了一种结构化的方法来创建对象。

常见的建造者模式实现方式有:传统实现方式(标准建造者模式)、链式调用实现(流式接口)、静态内部类实现等。

 传统实现方式(标准建造者模式)
  • 原理‌:
    • 包含四个核心角色:产品类(Product)、抽象建造者(Builder)、具体建造者(ConcreteBuilder)和指挥者(Director)
    • 指挥者控制构建顺序,调用具体建造者的接口
    • 具体建造者实现抽象建造者的方法,负责具体部件的创建
  • 优点‌:

    • 解耦构建过程与产品细节
    • 支持多产品扩展
    • 可以精细控制构建过程
  • ‌缺点‌:

    • 需要额外定义指挥者类
    • 增加系统复杂度
    • 当产品内部变化时,需要修改所有建造者类

Java示例

class Computer {
    private String cpu;
    private String ram;
    private String storage;
    
    public void setCpu(String cpu) { this.cpu = cpu; }
    public void setRam(String ram) { this.ram = ram; }
    public void setStorage(String storage) { this.storage = storage; }
    
    public void showSpecs() {
        System.out.println("CPU: " + cpu + ", RAM: " + ram + ", Storage: " + storage);
    }
}

interface ComputerBuilder {
    void buildCpu();
    void buildRam();
    void buildStorage();
    Computer getComputer();
}

class GamingComputerBuilder implements ComputerBuilder {
    private Computer computer = new Computer();
    
    @Override
    public void buildCpu() { computer.setCpu("Intel i9"); }
    @Override
    public void buildRam() { computer.setRam("32GB DDR5"); }
    @Override
    public void buildStorage() { computer.setStorage("1TB NVMe SSD"); }
    @Override
    public Computer getComputer() { return computer; }
}

class Director {
    public Computer construct(ComputerBuilder builder) {
        builder.buildCpu();
        builder.buildRam();
        builder.buildStorage();
        return builder.getComputer();
    }
}


public class BuilderPatternDemo {
    public static void main(String[] args) {
        // 传统实现方式
        Director director = new Director();
        Computer gamingPC = director.construct(new GamingComputerBuilder());
        gamingPC.showSpecs();
    }
}
链式调用实现(流式接口)
  • 原理‌:
    • 将建造者作为产品类的静态内部类
    • 通过链式调用方法返回自身
    • 产品类使用私有构造函数,通过建造者创建实例
  • 优点‌:

    • 代码可读性高,方法链直观
    • 不需要指挥者类,结构更简单
    • 可以灵活设置可选参数
  • ‌缺点‌:

    • 对必选参数支持不够友好
    • 参数校验逻辑需要额外处理
    • 不适合特别复杂的构建过程

Java示例

class Phone {
    private final String os;
    private final String chipset;
    private final int ram;
    private final int storage;
    private String color;
    
    private Phone(Builder builder) {
        this.os = builder.os;
        this.chipset = builder.chipset;
        this.ram = builder.ram;
        this.storage = builder.storage;
        this.color = builder.color;
    }
    
    public static class Builder {
        private final String os;
        private final String chipset;
        private final int ram;
        private final int storage;
        private String color = "Black";
        
        public Builder(String os, String chipset, int ram, int storage) {
            this.os = os;
            this.chipset = chipset;
            this.ram = ram;
            this.storage = storage;
        }
        
        public Builder color(String color) {
            this.color = color;
            return this;
        }
        
        public Phone build() {
            return new Phone(this);
        }
    }
    
    public void showDetails() {
        System.out.println("OS: " + os + ", Chipset: " + chipset + 
                         ", RAM: " + ram + "GB, Storage: " + storage + 
                         "GB, Color: " + color);
    }
}



public class BuilderPatternDemo {
    public static void main(String[] args) {
        // 链式调用实现
        Phone phone = new Phone.Builder("Android", "Snapdragon 8 Gen 2", 12, 256)
                             .color("Blue")
                             .build();
        phone.showDetails();
    }
}
静态内部类实现
  • 原理‌:
    • 将建造者作为产品类的静态内部类
    • 建造者包含必选参数的构造函数
    • 通过链式方法设置可选参数
  • ‌优点‌:

    • 强制必选参数,编译时检查
    • 可选参数设置灵活
    • 代码结构紧凑
  • ‌缺点‌:

    • 内部类与外部类耦合
    • 不适合特别复杂的构建逻辑
    • 参数校验需要额外处理

Java示例

class Car {
    private final String make;
    private final String model;
    private final int year;
    private String color;
    private int mileage;
    
    private Car(Builder builder) {
        this.make = builder.make;
        this.model = builder.model;
        this.year = builder.year;
        this.color = builder.color;
        this.mileage = builder.mileage;
    }
    
    public static class Builder {
        private final String make;
        private final String model;
        private final int year;
        private String color = "White";
        private int mileage = 0;
        
        public Builder(String make, String model, int year) {
            this.make = make;
            this.model = model;
            this.year = year;
        }
        
        public Builder color(String color) {
            this.color = color;
            return this;
        }
        
        public Builder mileage(int mileage) {
            if (mileage < 0) throw new IllegalArgumentException("Mileage cannot be negative");
            this.mileage = mileage;
            return this;
        }
        
        public Car build() {
            return new Car(this);
        }
    }
    
    public void displayInfo() {
        System.out.println(make + " " + model + " (" + year + "), " + 
                         color + ", " + mileage + " miles");
    }
}



public class BuilderPatternDemo {
    public static void main(String[] args) {
        // 静态内部类实现
        Car car = new Car.Builder("Toyota", "Camry", 2023)
                        .color("Red")
                        .mileage(15000)
                        .build();
        car.displayInfo();
    }
}

建造者模式实现方式对比及应用场景

实现方式适用场景优点缺点
传统实现方式复杂对象构建,需要严格控制构建顺序构建过程与表示分离,支持多产品扩展类数量多,结构复杂,维护成本高
链式调用实现参数可选性高的对象构建代码可读性高,使用灵活对必选参数支持不足,校验逻辑复杂
静态内部类实现必选参数明确的对象构建强制必选参数,结构紧凑耦合度高,不适合复杂构建逻辑

推荐使用场景

  • 简单对象优先使用链式调用‌:对于参数可选性高的简单对象,链式调用实现最为简洁高效。
  • 复杂对象使用传统实现‌:当对象构建过程复杂且需要严格控制构建顺序时,传统实现方式更为合适。
  • 必选参数明确使用静态内部类‌:当对象有明确的必选参数时,静态内部类实现能提供编译时检查。
  • 考虑使用Lombok简化代码‌:对于简单场景,可以使用Lombok的@Builder注解自动生成建造者代码。
  • ‌合理使用参数校验‌:在build()方法中添加参数校验逻辑,确保构建的对象处于合法状态。
java23种设计模式!附源码 本文将详细介绍Java中常见的23种设计模式、应用场景、优缺点、代码示例。包括单例模式、工厂模式、建造者模式、原型模式、适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、代理模式、职责链模式、状态模式、策略模式、模板方法模式、观察者模式、迭代器模式、访问者模式、中介者模式、备忘录模式、解释器模式和享元工厂模式。通过了解这些设计模式,可以帮助我们更好地理解和应用面向对象编程的思想,提高代码的可重用性、灵活性和可维护性。 阅读详情

相关推荐

Doris存储层设计介绍2——数据写入及删除流程

Doris存储层设计介绍2——数据写入及删除流程

爱吃辣条的博客 4585

JAVA设计模式——23种设计模式详解

设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目的是实现代码的高内聚和低耦合。

每日一记,每周一结。 3364

ubuntu安装hodoop详细步骤

进入到Ubuntu系统中打开桌面,点击鼠标右键打开终端,在终端中输入如下命令这样就可以创建一名为hadoop的新用户。给用户输设置密码输入,输入如下命令,设置密码,按提示输入两次然后为hadoop用户增加管理员全新,这样就可以方便部署完成之后输入重启命令,重启一下Ubuntu系统,然后登录到我们创建的hadoop用户上面reboot。

2301_77603488的博客 9198

Java中23种设计模式

Java中23种设计模式,包括简单介绍,适用场景以及优缺点等

呜呜老司机的博客家园 9万+

新手别怕!用‘东北天’和‘右前上’坐标系,5分钟搞懂惯性导航姿态矩阵(含Python验证代码)

本文通过‘东北天(ENU)’和‘右前上(RFU)’坐标系,详细解析惯性导航中的姿态矩阵概念。包含Python代码验证,帮助新手快速理解坐标变换、欧拉角及旋转矩阵的构建与应用,特别强调有限转动不可交换性与无限转动次序无关的区别。

weixin_29062255的博客 331

物理专业书库模板(1):物理学书单(适合物理专业本科生、研究生、科研工作者、物理爱好者...)

物理专业书库模板(1):物理学书单(适合物理专业本科生、研究生、科研工作者、物理爱好者...) 求赞求喜欢求分享,建议关注,防止文章丢失。

hepyang的博客 2179

JAVA中23种设计模式

一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式: 共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式: 共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式: 共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式

qw_0214的博客 1617

如何安装最新版本的 SAP ABAP Development Tool ( ADT ) ,并且能够随时升级

下载链接:https://tools.hana.ondemand.com/#abap 首先安装 Eclipse IDE for Java Developers 找到适合自己操作系统的 Eclipse 安装包: 安装之后,打开Eclipse: Install -> New Softwares, 输入 url:https://tools.hana.ondemand.com/latest 全部安装: 安装完毕之后,新建一个 ABAP Project,本地 SAP GUI 里添加的系统,会自动带出来:

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4279

设计模式总结

1、认识了这么多设计模式。刚刚接触java没多久就在学长那里听过设计模式的大名,但是由于能力有限,一直不敢触碰。而今有幸将其都认识了。 2、开始有设计的理论了。在接触设计模式之前没有怎么想过设计方面东东,看到问题就立马动手解决,没有想到怎么样来设计更好,如何来是这块更加优化、漂亮。 3、开始考虑系统的可扩展性了。 4、在遇到问题后开始想有那个设计模式会适用这个场景。 5、对面向对象...

chenssy 的技术博客 1347

Google Earth Engine(GEE)——全球影像数据正确下载方式和注意事项

今天看到有人担心全球影像能不能下载的问题? 有时候我们会用到全球的数据,但是如何下载全球的数据呢? 首先如果没有全球的矢量边界我们会不会无法下载全球的数据,答案当然是可以的,因为我们在边界筛选的过程中filterBounds(),就是为了筛选边界,当我们不进行边界筛选的时候,自然而然默认的边界范围就是全球的,但是紧接着会面临其他两个问题:1如何下载?2如何在不缩小分辨率的情况下下载成功? 对于第一个问题我们如何下载?还是按照正常的逻辑利用export直接倒出到Google硬盘当中, 代码:

此星光明博客 3770

YOLOv9改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题

本文记录的是改进YOLOv9的损失函数,将其替换成Slide Loss,并详细说明了优化原因,注意事项等。Slide Loss函数可以有效地解决样本不平衡问题,为困难样本赋予更高的权重,使模型在训练过程中更加关注困难样本。若是在自己的数据集中发现容易样本的数量非常大,而困难样本相对稀疏,可尝试使用Slide Loss来提高模型在处理复杂样本时的性能。

Limiiiing的博客 2595

Java开发者必备:23种设计模式全面解析

简单工厂模式虽然也能解决这个问题,但这个模式只是解决对象的创建问题,而且由于工厂本身包括了所有的收费方式,商场是可能经常性地更改打折额度和返利额度,每次维护或扩展收费方式都要改动这个工厂。命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以 及支持可撤销的操作。解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

Clang’s Blog 1806

手把手教你学基于 Linux 的 NPU 固件开发-第 10 讲:可靠性设计(RAS)——让系统坚如磐石错误检测、纠正与上报机制(ECC、Parity)

组件推荐保护机制备注HBM/DDRScrubbing必须开启,定期巡检片上 SRAMECC(权重/激活值),Parity(指令)权衡面积与可靠性计算单元ABFT或DMR(关键路径)防止计算逻辑错误片上网络CRC重传保证数据传输完整性系统软件AER 上报CE 监控自动恢复闭环管理,杜绝 SDC运维策略预测性维护Checkpoint变被动为主动核心心法(信任硬件,但必须验证。在纳米尺度下,错误是必然发生的物理现象。

MHD0815的博客 90

JAVA 设计模式 GOF23(三)建造者模式

建造者模式: 目的:对于生产一个复杂的东西将建造和装配进行隔离。 例如:生产一个汽车,需要建造很多的零部件,有一个零部件加工工厂专门生产汽车的零部件。生产完成后,需要对汽车进行整体的组装,这时就需要一个组装工厂来装配汽车的零件,从而生产一个整体的汽车。 整体把握: ①需要一个待生产的实体(可以是汽车,飞机,或某个软件),实体中包含哪几项内容(发动机,轮胎,座椅)等 ②创建一个建造者接口 自定义一个...

weixin_43752167的博客 159

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

建造者模式 简介 建造者模式主要解决的问题是在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的过程构成;由于需求的变化,这个复杂对象的各个部分经常面临着重大的变化,但是将它们组合在一起的过程却相对稳定。 结构 在这个示意性的系统里,最终产品Product只有两个零件,即part1和part2。相应的建造方法也有两个:buildPart1()和buildPart2()、同时可以看出本模式涉及到四个角色,它们分别是: 抽象建造者(Builder)角色:给出一个抽象接口,以规

JavaTeachers的博客 205

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

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

java设计者模式及特点_Java 23种设计模式(三) --建造者模式及原型模式

一、建造者模式(Builder)工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。我们看一下代码:还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender。最后,建造者类如下:publicclassBuilder...

weixin_28852151的博客 242

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java二十三种设计模式-建造者模式(4/23)

建造者模式是一种高级的创建型设计模式,旨在提供一种灵活的解决方案,用于创建复杂的对象。建造者模式将一个复杂对象的构建过程封装起来,同时允许按步骤构造对象。它允许用户通过相同的创建过程生成不同的表示。建造者模式是处理复杂对象创建问题的有效工具。通过本文的深入分析,希望读者能够对建造者模式有更全面的理解,并在实际开发中做出合理的设计选择。

小相探索IT世界 1481

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

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

胖子胖子大胖子的博客 1211

java中23%5_java23种设计模式——五、建造者模式

源码在我的github和gitee中获取目录java23种设计模式—— 一、设计模式介绍java23种设计模式—— 二、单例模式java23种设计模式——三、工厂模式java23种设计模式——四、原型模式java23种设计模式——五、建造者模式建造者模式建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象...

weixin_30611317的博客 236

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

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

Fatter$hday的博客 1609

一文搞懂23种Java设计模式

本文介绍了Java设计模式的三大类(创建型、结构型、行为型)共23种模式,重点标注了高频使用的9种模式。创建型模式包括单例、工厂方法、抽象工厂、建造者和原型模式;结构型模式涵盖适配器、装饰器和代理模式等。每种模式均给出定义、适用场景及代码示例,如单例模式的饿汉/懒汉实现、工厂方法模式的产品创建解耦等,帮助开发者理解如何通过设计模式提升代码的灵活性、复用性和可维护性。

学不可以已,活到老,学到老。 956

Java23种设计模式之建造者模式的学习(通俗易懂)

源码链接(Gitee码云):https://gitee.com/oldou/javadesignpatterns 这里有我整理好的Java23种设计模式的源码以及博客教程,博客教程中介绍了Java23种设计的模式的各种实现方式以及应用场景,非常适用于学习以及提高我们的设计思维,如果对大家有所帮助,请记得star一下给予作者一定的精神支持,你的star是我写出更好的博客的动力,谢谢大家。 建造者模式(Builder pattern) 建造者模式也属于创建型模式,它提供了一种创建对象的最佳方式。 ..

weixin_43246215的博客 3302

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

设计模式。

『愚』的博客 971

JAVA的23种设计模式

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

“ 春风若有怜花意,能否许我再少年。” 1133

【JAVA长虹键法】第七式 建造者模式(23种设计模式),浦发银行java开发面试问题

【JAVA长虹键法】主要讲了23种设计模式,本系列专栏会以虹猫蓝兔七侠传的故事为例来给大家详细分析所有模式,希望能给大家带来帮助!建造者模式神医豆豆炼丹指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。神医豆豆有一套炼制丹药的方流程,所以不论丹方如何变化,但是炼丹流程都一样。想要炼制其他丹药只需要一个丹方就可以完成。

2401_84519718的博客 901

JAVA23种设计模式——建造者模式

本文主要讲一下建造者模式,因为其和工厂模式都是封装细节,只提供最终的成品,所以讲完建造者模式,再讲一下两种模式之间的异同,以及在什么环境下使用什么样的模式。 如果对工厂模式还不了解可以先看这篇文章:JAVA23种设计模式——工厂模式 一、建造者模式 建造者模式分三块内容(还是拿产品举例): 产品本身(实体类) 构建产品的标准(接口)和使用标准生产产品的车间(接口的实现类,具体生产什么产品每个车...

free_journey的博客 282
上一篇: Java23种设计模式(二):原型模式
下一篇: 使用Springboot+Vue进行Web开发,基础环境安装配置指南
秃头老赵_
博客等级 码龄9年 16粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃头老赵_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值