五、设计模式之间建造器模式【Builder】

建造器模式用于隔离复杂对象的建造过程,封装建造细节,支持灵活的组装顺序。本文介绍了其优点、适用场景以及一个HomeBuilder的代码示例,展示了与工厂模式的区别。
摘要由CSDN通过智能技术生成


在这里插入图片描述

五、设计模式之间建造器模式【Builder】

又称:生成器模式
在这里插入图片描述

所属类型定义
创建型将对象的建造和表示分离。使得不同的构建组成和顺序,产生不同的表示

能帮我们干什么?

主要解决什么问题?

主要解决的是 复杂对象 的建造过程隔离。

优缺点

优点
  1. 封装良好

    封装了复杂对象的建造细节。对客户端而言。只知道了提供数据,返回期望的结果。内部建造细节割裂在了建造器中。

  2. 建造者独立 ,便于扩展
  3. 便于控制细节风险

    因为建造者独立,建造步骤可以细化,不会对其他模块产生影响

缺点:

使用的场景

1.相同的方法,不同的执行顺序,产生不同的时间结果时,可以采用建造者模式。
2. 多个部件或零件,都可以装配到一个对象时,但产生的结果有不相同时。可以使用建造者。
3. 产品类非常复杂,调用顺序不同产生不同效能。

菜谱: 如果一道菜的不同顺序,那么产生的结果是不一样的。

实现

角色

  1. 具体需要构建的产品类
  2. 抽象建造器。规范建造的步骤。
  3. 具体建造者。实现产品类的具体步骤。
  4. 导演类。 调用具体构造器者进行构造的过程

请添加图片描述

建造者模式

  1. 抽象建造者: 组成目标类的必要部分的建造的定义方法
  2. 具体建造者:实现各细节的建造逻辑
  3. 目标产品: 最终建造的产品,该产品构造比较复杂,分解成多步骤建造。

具体实现设计有很多中。只要保证角色的充当者,进行开发即可。

实现难度: ⭐️ ⭐️

代码实现

https://gitcode.net/k316378085/Java/-/tree/master/java/com/kongxiang/raindrop/dp/type/create/bulider

实现开发过程中:我们会把builder放到目标类中。

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.kongxiang.raindrop.dp.type.create.bulider;

public class Home {
    private String walls;
    private String door;
    private String windows;
    private String top;

    Home(String walls, String door, String windows, String top) {
        this.walls = walls;
        this.door = door;
        this.windows = windows;
        this.top = top;
    }

    public static HomeBuilder builder() {
        return new HomeBuilder();
    }

    public static class HomeBuilder {
        private String walls;
        private String door;
        private String windows;
        private String top;

        HomeBuilder() {
        }

        public HomeBuilder walls(String walls) {
            this.walls = walls;
            return this;
        }

        public HomeBuilder door(String door) {
            this.door = door;
            return this;
        }

        public HomeBuilder windows(String windows) {
            this.windows = windows;
            return this;
        }

        public HomeBuilder top(String top) {
            this.top = top;
            return this;
        }

        public Home build() {
            return new Home(this.walls, this.door, this.windows, this.top);
        }
 
    }
}


总结

建造者模式和工厂模式关注点不同。
建造者关注的是零件类型和装配顺序。
工厂方法模式关注的是 创建零件。

通常我们使用建造者模式时,和模方法模式搭配使用。将创建零件和构造的方法通过模版固定下来。建筑器实现具体的建造逻辑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嘉羽很烦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值