尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

软件工程学习日志2025.11.3

软件工程学习日志2025.11.3
📅 发布时间:2026/6/19 16:48:41

软件设计模式 - 建造者模式实战
• 实验来源:石家庄铁道大学信息学院实验5

• 实验类型:模仿型实验

• 核心目标:深入理解建造者模式的原理并掌握实际应用

🔍 建造者模式核心理解

模式动机

建造者模式的核心价值在于将复杂对象的构建过程与其表示分离。在计算机组装这个典型案例中:
• 复杂对象:计算机(包含CPU、内存、硬盘、主机等多个部件)

• 稳定过程:组装流程固定(安装CPU→内存→硬盘→主机)

• 不同表示:最终产品可以是笔记本或台式机等不同形态

模式优势

  1. 构建过程封装:指挥者统一管理组装流程
  2. 产品表示灵活:相同构建过程可产生不同产品
  3. 符合开闭原则:新增计算机类型只需添加新建造者

🏗️ 系统类图设计

classDiagram
class Computer {
-String cpu
-String memory
-String hardDisk
-String mainFrame
+setCPU(String cpu)
+setMemory(String memory)
+setHardDisk(String hardDisk)
+setMainFrame(String mainFrame)
+show()
}

class ComputerBuilder {<<abstract>>#Computer computer+buildComputer() void+buildCPU() void+buildMemory() void+buildHardDisk() void+buildMainFrame() void+getComputer() Computer
}class LaptopBuilder {+buildCPU() void+buildMemory() void+buildHardDisk() void+buildMainFrame() void
}class DesktopBuilder {+buildCPU() void+buildMemory() void+buildHardDisk() void+buildMainFrame() void
}class Director {-ComputerBuilder builder+setBuilder(ComputerBuilder builder)+construct() Computer
}ComputerBuilder <|-- LaptopBuilder
ComputerBuilder <|-- DesktopBuilder
ComputerBuilder o--> Computer
Director o--> ComputerBuilder

💻 核心代码实现

  1. 产品类 - 计算机实体

/**

  • 计算机产品类 - 代表被构建的复杂对象
    */
    public class Computer {
    private String cpu;
    private String memory;
    private String hardDisk;
    private String mainFrame;

    // Setter方法
    public void setCPU(String cpu) { this.cpu = cpu; }
    public void setMemory(String memory) { this.memory = memory; }
    public void setHardDisk(String hardDisk) { this.hardDisk = hardDisk; }
    public void setMainFrame(String mainFrame) { this.mainFrame = mainFrame; }

    /**

    • 展示电脑配置信息
      */
      public void show() {
      System.out.println("====== 电脑配置信息 ");
      System.out.println("主机:" + mainFrame);
      System.out.println("CPU:" + cpu);
      System.out.println("内存:" + memory);
      System.out.println("硬盘:" + hardDisk);
      System.out.println("
      ===================");
      }
      }
  1. 抽象建造者 - 定义构建接口

/**

  • 抽象建造者 - 定义计算机组装的通用接口
    */
    public abstract class ComputerBuilder {
    protected Computer computer;

    public Computer getComputer() {
    return computer;
    }

    /**

    • 创建计算机实例
      */
      public void buildNewComputer() {
      computer = new Computer();
      }

    // 抽象构建方法
    public abstract void buildMainFrame();
    public abstract void buildCPU();
    public abstract void buildMemory();
    public abstract void buildHardDisk();
    }

  1. 具体建造者 - 笔记本构建器

/**

  • 具体建造者 - 笔记本电脑组装实现
    */
    public class LaptopBuilder extends ComputerBuilder {

    @Override
    public void buildMainFrame() {
    computer.setMainFrame("联想轻薄本专用主板");
    System.out.println("安装笔记本主板...");
    }

    @Override
    public void buildCPU() {
    computer.setCPU("Intel Core i7-1260P 移动版");
    System.out.println("安装笔记本CPU...");
    }

    @Override
    public void buildMemory() {
    computer.setMemory("16GB LPDDR5 4800MHz");
    System.out.println("安装笔记本内存...");
    }

    @Override
    public void buildHardDisk() {
    computer.setHardDisk("1TB NVMe SSD");
    System.out.println("安装笔记本硬盘...");
    }
    }

  1. 具体建造者 - 台式机构建器

/**

  • 具体建造者 - 台式电脑组装实现
    */
    public class DesktopBuilder extends ComputerBuilder {

    @Override
    public void buildMainFrame() {
    computer.setMainFrame("华硕TUF GAMING ATX大板");
    System.out.println("安装台式机主板...");
    }

    @Override
    public void buildCPU() {
    computer.setCPU("AMD Ryzen 7 7700X");
    System.out.println("安装台式机CPU...");
    }

    @Override
    public void buildMemory() {
    computer.setMemory("32GB DDR5 5200MHz");
    System.out.println("安装台式机内存...");
    }

    @Override
    public void buildHardDisk() {
    computer.setHardDisk("2TB SSD + 4TB HDD");
    System.out.println("安装台式机硬盘...");
    }
    }

  1. 指挥者 - 控制构建流程

/**

  • 指挥者 - 控制计算机的组装流程
    */
    public class Director {
    private ComputerBuilder builder;

    public void setBuilder(ComputerBuilder builder) {
    this.builder = builder;
    }

    /**

    • 构建计算机的稳定流程
      */
      public Computer construct() {
      System.out.println("开始组装计算机...");

      builder.buildNewComputer(); // 步骤1:创建新计算机
      builder.buildMainFrame(); // 步骤2:安装主机
      builder.buildCPU(); // 步骤3:安装CPU
      builder.buildMemory(); // 步骤4:安装内存
      builder.buildHardDisk(); // 步骤5:安装硬盘

      System.out.println("计算机组装完成!");
      return builder.getComputer();
      }
      }

  1. 客户端测试代码

/**

  • 客户端测试类
    */
    public class Client {
    public static void main(String[] args) {
    // 创建指挥者
    Director director = new Director();

     System.out.println("=== 组装笔记本电脑 ===");// 组装笔记本电脑ComputerBuilder laptopBuilder = new LaptopBuilder();director.setBuilder(laptopBuilder);Computer laptop = director.construct();laptop.show();System.out.println("\n=== 组装台式电脑 ===");// 组装台式电脑ComputerBuilder desktopBuilder = new DesktopBuilder();director.setBuilder(desktopBuilder);Computer desktop = director.construct();desktop.show();// 验证两个计算机对象不同System.out.println("两台电脑是否相同: " + (laptop == desktop));
    

    }
    }

🎯 运行结果示例

=== 组装笔记本电脑 ===
开始组装计算机...
安装笔记本主板...
安装笔记本CPU...
安装笔记本内存...
安装笔记本硬盘...
计算机组装完成!
====== 电脑配置信息 ======
主机:联想轻薄本专用主板
CPU:Intel Core i7-1260P 移动版
内存:16GB LPDDR5 4800MHz
硬盘:1TB NVMe SSD

=== 组装台式电脑 ===
开始组装计算机...
安装台式机主板...
安装台式机CPU...
安装台式机内存...
安装台式机硬盘...
计算机组装完成!
====== 电脑配置信息 ======
主机:华硕TUF GAMING ATX大板
CPU:AMD Ryzen 7 7700X
内存:32GB DDR5 5200MHz
硬盘:2TB SSD + 4TB HDD

两台电脑是否相同: false

📝 编程规范实践总结

代码规范要点

  1. 命名规范:类名大驼峰,方法名小驼峰
  2. 访问控制:属性private,建造者引用protected
  3. 注释完整:每个类和方法都有JavaDoc说明
  4. 包结构清晰:相关类组织在合适包中
  5. 格式统一:一致的缩进和代码风格

设计模式最佳实践

  1. 单一职责:每个类职责明确
  2. 依赖倒置:依赖于抽象而非具体实现
  3. 开闭原则:易于扩展新的建造者

💡 学习收获与反思

掌握程度评估

• ✅ 理解了建造者模式的结构和动机

• ✅ 能够绘制标准的UML类图

• ✅ 实现了完整的代码示例

• ✅ 遵循了编程规范要求

实际应用思考

建造者模式不仅适用于计算机组装,在软件开发中还有很多应用场景:
• 文档生成器(HTML、PDF等不同格式)

• 餐饮订单系统(不同套餐组合)

相关新闻

  • P1029 [NOIP 2001 普及组] 最大公约数和最小公倍数问题
  • SQL Server 并发控制 第四篇:Snapshot Isolation (SI) 和 Read Committed Snapshot Isolation (RCSI)
  • Java异常处理实战精要:构建稳定应用的基石

最新新闻

  • 2026辽阳漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • RTXGI-DDGI入门指南:如何快速掌握NVIDIA实时全局光照技术
  • (2026新)百色正规防水补漏公司口碑榜TOP5权威推荐!卫生间/厨房/阳台/屋顶/天花板/地下室渗漏水检测维修攻略-靠谱漏水检测维修师傅推荐 - 安佳防水
  • AspectMock与Codeception完美结合:构建全面的PHP测试套件
  • Presenton开源AI演示生成工具:企业级演示文稿创作的完整解决方案
  • Awesome-AI 开源仓库架构设计与技术学习路线工程化沉淀方案

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号