设计模式-建造者模式

目录

🎈1.建造者模式介绍

🧨2.核心角色 

3.应用实例 

🎉4.案例实现 

🎊5.优缺点


1.建造者模式介绍

  • 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。
  • 这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
  • 允许用户只通过指定复杂对象的类型和内容就可以构建它们,不需要知道内部的具体构建细节

2.核心角色 

  • Builder:抽象建造者,定义多个通用方法和构建方法
  • ConcreteBuilder:具体建造者,可以有多个
  • Director:指挥者,控制整个组合过程,将需求交给建造者,由建造者去创建对象
  • Product:产品角色

3.应用实例 

  •  1、去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。
  • 2、电脑有低配、高配,组装需要CPU、内存、电源、硬盘、主板等
  • 3、JAVA 中的 StringBuilder。

4.案例实现 

  • 1.创建具体的产品类(Product
/**
 * 具体的产品-电脑
 */
public class Computer {
    /**
     * 主板
     */
    private String mainBoard;
    /**
     * cpu
     */
    private String cpu;
    /**
     * 磁盘
     */
    private String disk;
    /**
     * 屏幕
     */
    private String screen;

    /**
     * 内存
     */
    private String memory;

    public String getMainBoard() {
        return mainBoard;
    }

    public void setMainBoard(String mainBoard) {
        this.mainBoard = mainBoard;
    }

    public String getCpu() {
        return cpu;
    }

    public void setCpu(String cpu) {
        this.cpu = cpu;
    }

    public String getDisk() {
        return disk;
    }

    public void setDisk(String disk) {
        this.disk = disk;
    }

    public String getScreen() {
        return screen;
    }

    public void setScreen(String screen) {
        this.screen = screen;
    }

    public String getMemory() {
        return memory;
    }

    public void setMemory(String memory) {
        this.memory = memory;
    }

    @Override
    public String toString() {
        return "Computer{" +
                "mainBoard='" + mainBoard + '\'' +
                ", cpu='" + cpu + '\'' +
                ", disk='" + disk + '\'' +
                ", screen='" + screen + '\'' +
                ", memory='" + memory + '\'' +
                '}';
    }
}
  • 2.创建抽象创造者 (Builder
/**
 * 建造者模式统一接口
 */
public interface Builder {

    void builderMainBoard();

    void builderCpu();

    void builderDish();

    void builderScreen();

    void builderMemory();

    Computer createComputer();
}
  • 3.创建具体的创造者类(ConcreteBuilder
/**
 * 具体的建造者-实现不同的产品-高配电脑
 */
public class HighComputer implements Builder {
    Computer computer = new Computer();

    @Override
    public void builderMainBoard() {
        computer.setMainBoard("高配主板");
    }

    @Override
    public void builderCpu() {
        computer.setCpu("高配cpu");
    }

    @Override
    public void builderDish() {
        computer.setDisk("高配磁盘");

    }

    @Override
    public void builderScreen() {
        computer.setScreen("高配屏幕");
    }

    @Override
    public void builderMemory() {
        computer.setMemory("高配内存");

    }

    @Override
    public Computer createComputer() {
        return computer;
    }
}
/**
 * 具体的建造者-实现不同的产品-底配电脑
 */
public class LowComputer implements Builder {
    Computer computer = new Computer();

    @Override
    public void builderMainBoard() {
        computer.setMainBoard("低配主板");
    }

    @Override
    public void builderCpu() {
        computer.setCpu("低配cpu");
    }

    @Override
    public void builderDish() {
        computer.setDisk("低配磁盘");

    }

    @Override
    public void builderScreen() {
        computer.setScreen("低配屏幕");
    }

    @Override
    public void builderMemory() {
        computer.setMemory("低配内存");

    }

    @Override
    public Computer createComputer() {
        return computer;
    }
}
  • 5.创建具体的指挥者(Director) 
/**
 *总调度者
 * 将产品和创建过程进行解耦,使用相同的创建过程创建不同的产品
 */
public class Director {
    public Computer create(Builder builder){
        builder.builderCpu();
        builder.builderMainBoard();
        builder.builderDish();
        builder.builderMemory();
        builder.builderScreen();
        return builder.createComputer();
    }
}

5.优缺点

  • 优点
  • 分离构建过程和表示,使得构建过程更加灵活,可以构建不同的表示。
  • 可以更好地控制构建过程,隐藏具体构建细节。
  • 代码复用性高,可以在不同的构建过程中重复使用相同的建造者。
  • 增加新的具体建造者无须修改原有类库的代码,符合开闭原则
  • 缺点
  • 建造者模式所创建的产品一般具有较多的共同点,如果产品差异大则不建议使用
  • 建造者模式增加了系统的类和对象数量。

相关推荐

  1. 设计模式——建造模式

    2024-03-28 07:50:03       63 阅读
  2. 设计模式-建造模式

    2024-03-28 07:50:03       55 阅读
  3. 设计模式-建造模式

    2024-03-28 07:50:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 07:50:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 07:50:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 07:50:03       82 阅读
  4. Python语言-面向对象

    2024-03-28 07:50:03       91 阅读

热门阅读

  1. k8s调优--来自gpt

    2024-03-28 07:50:03       36 阅读
  2. 解释组合模式和外观模式

    2024-03-28 07:50:03       38 阅读
  3. 代码随想录 day32 第八章 贪心算法 part02

    2024-03-28 07:50:03       42 阅读
  4. 7、jenkins项目构建细节-常用的构建触发器

    2024-03-28 07:50:03       41 阅读
  5. SpringBoot高级面试题-2024

    2024-03-28 07:50:03       47 阅读
  6. 前端开发神器之 VsCode AI 辅助插件 DevChat

    2024-03-28 07:50:03       42 阅读
  7. 缓存技术简介

    2024-03-28 07:50:03       45 阅读
  8. sql oracle 获取当前日期的最后一天

    2024-03-28 07:50:03       41 阅读
  9. 文章阅读-自动化领域论文选读

    2024-03-28 07:50:03       43 阅读