当前位置: 首页 > wzjs >正文

长春南京小学网站建设宜宾公司做网站

长春南京小学网站建设,宜宾公司做网站,网站开发mvc架构,网站建设 数据库购买用「搭乐高」思维理解建造者模式 一、现实场景痛点 假设要组装一台游戏电脑,需配置: CPU(Intel i9 / AMD Ryzen)显卡(RTX 4090 / RX 7900)内存(32GB DDR5 / 64GB DDR5)散热&#x…

用「搭乐高」思维理解建造者模式


一、现实场景痛点

假设要组装一台游戏电脑,需配置:

  • CPU(Intel i9 / AMD Ryzen)
  • 显卡(RTX 4090 / RX 7900)
  • 内存(32GB DDR5 / 64GB DDR5)
  • 散热(风冷 / 水冷)

传统构造问题

// 构造函数爆炸
Computer computer = new Computer("i9", "RTX4090", "64G", "水冷", true, true...);
// 或setter地狱
computer.setCPU("i9");
computer.setGPU("RTX4090");
//...中间可能漏配关键组件

二、建造者模式四重角色

1. 产品(Product)→ 乐高成品
public class Computer {private String cpu;private String gpu;private String memory;//...其他组件// 私有构造强制使用建造者private Computer(Builder builder) {this.cpu = builder.cpu;this.gpu = builder.gpu;//...组件装配}
}
2. 抽象建造者(Builder)→ 乐高说明书
public interface ComputerBuilder {ComputerBuilder buildCPU(String cpu);ComputerBuilder buildGPU(String gpu);ComputerBuilder buildMemory(String memory);//...其他组件方法Computer assemble(); // 最终组装
}
3. 具体建造者 → 不同主题套装
// 游戏电脑建造者
public class GamingComputerBuilder implements ComputerBuilder {private String cpu;private String gpu;//...其他组件@Overridepublic ComputerBuilder buildCPU(String cpu) {this.cpu = cpu + "超频版";return this;}@Overridepublic Computer assemble() {return new Computer(this); // 调用私有构造}
}
4. 指挥者(Director)→ 乐高设计师
public class ComputerDirector {public Computer constructHighEndPC(ComputerBuilder builder) {return builder.buildCPU("i9-13900K").buildGPU("RTX4090").buildMemory("64GB DDR5").assemble();}
}

三、完整调用流程

// 选择建造者
ComputerBuilder builder = new GamingComputerBuilder();// 指挥者按方案组装
Computer highEndPC = new ComputerDirector().constructHighEndPC(builder);// 自由组装(不用指挥者)
Computer customPC = builder.buildCPU("Ryzen 9").buildGPU("RX 7900XTX").assemble();

四、设计哲学升华

1. 控制反转原则
  • 传统方式:用户直接操作组件(容易出错)
  • 建造者模式:通过Builder接口约束装配步骤(强制顺序)
2. 开闭原则
  • 新增配置方案只需扩展Builder实现类
  • 无需修改已有代码(如新增办公电脑建造者)
3. 表达意图 > 实现细节
  • builder.buildGPU("RTX4090").assemble() 比多参数构造更清晰

五、实际应用场景

  1. 快餐店套餐组合

    • 汉堡 + 薯条 + 饮料的灵活搭配
  2. SQL查询构建

    QueryBuilder.select("name", "age").from("users").where("age > 18").build();
    
  3. Lombok @Builder原理

    @Builder
    public class User {private String name;private int age;
    }
    // 自动生成UserBuilder类
    

六、面试高频问题

Q1:建造者模式 vs 工厂模式?
  • 工厂模式:关注产品整体生成(要什么车?→ 直接给成品)
  • 建造者模式:关注装配过程(如何造车?→ 分步骤控制)
Q2:为什么要把Builder设计成内部类?
  • 封装性:强制通过Builder创建对象
  • 流畅接口:链式调用更优雅
  • 线程安全:Builder在构造完成前不暴露不完全对象
Q3:如何处理必选参数?
// 在Builder构造方法中强制传必选参数
public class UserBuilder {private final String name; // 必选public UserBuilder(String name) {this.name = name;}public UserBuilder age(int age) {this.age = age;return this;}
}

七、模式缺陷与规避

问题:建造者代码量增加
解决方案

  • 使用Lombok @Builder自动生成
  • 仅在复杂对象(参数≥4个)时使用

终极类比总结

建造者模式 = 吃自助餐的智慧

  1. 选餐盘(Builder接口)
  2. 自选菜品(buildXXX方法)
  3. 结账出餐(assemble方法)
  4. 不同餐厅(具体建造者)有不同菜品组合

文章转载自:

http://vTBZSS2Q.stLgg.cn
http://v4VEAFnV.stLgg.cn
http://GzMkQotZ.stLgg.cn
http://YORn0Faq.stLgg.cn
http://IUwMYj8H.stLgg.cn
http://R9p7TjfB.stLgg.cn
http://9tRWCCJy.stLgg.cn
http://CsewKGBi.stLgg.cn
http://S67Q6RYP.stLgg.cn
http://0bhxd1e2.stLgg.cn
http://iPngfYgv.stLgg.cn
http://N2BO0yua.stLgg.cn
http://syk17AZb.stLgg.cn
http://RSEVP4Bu.stLgg.cn
http://OVllRjRM.stLgg.cn
http://nr5cBoUy.stLgg.cn
http://vP9kj0jr.stLgg.cn
http://rwwJXiMj.stLgg.cn
http://8sSGh4sw.stLgg.cn
http://bZCKObNM.stLgg.cn
http://mar1oSax.stLgg.cn
http://jAAweFOg.stLgg.cn
http://s9gV7WKI.stLgg.cn
http://lMNBHs8g.stLgg.cn
http://NAbHgdZM.stLgg.cn
http://AFgIsu2A.stLgg.cn
http://x9BZl8bH.stLgg.cn
http://E3hJwTYd.stLgg.cn
http://8Hc98q0C.stLgg.cn
http://c6sGEu4d.stLgg.cn
http://www.dtcms.com/wzjs/699438.html

相关文章:

  • 怎样做订房网站wordpress添加优酷视频播放
  • 电子商务网站建设市场分析上线了建的网站免费吗
  • wordpress 多站点模式厚街h5网站建设
  • iis 默认网站删除第一装修网
  • 关于网站排名优化需要怎么做公司简历模板电子版
  • 北京学习网站建设手机浏览器输入网址
  • 便捷的网站建设大学同学会网站建设方案
  • onedrive做网站下载盘课堂阵地建设网站
  • 怎么做网站子页上海解封最新消息
  • 网站被iframe河北人社app安卓版
  • 网站建设合同付款方式微商货源网
  • 太原seo网站排名友情链接翻译
  • 做网站浏览器标签一般放哪什么是软件开发工具
  • 亿码酷网站建设网易企业邮箱输入完整的邮箱地址怎么填写
  • 网站建设咸阳湖北聚四方建设有限公司网站
  • 做免费漫画网站有风险吗宁波网络公司招聘信息
  • 富阳网站建设报价免费动图制作app
  • 无锡建设网站wordpress代码执行漏洞
  • 系统网站开发网页设制作与网站建设宝典 pdf
  • 北京高端企业网站建设大同工业园区招聘信息
  • 上海史特做网站多少钱win2003怎么做网站
  • 营口规划建设局网站做视频网站怎么盈利模式
  • 如何设置公司网站创建商城
  • 宣传旅游网站建设河南郑州新闻
  • 中国建设银行官网站住房公积金c++软件开发需要学什么
  • 做宠物的网站微网站什么意思
  • 麻涌镇网站仿做做网站需要机吗
  • 手机营销型网站制作江西省seo
  • 网站客户留言高校文明校园建设专题网站
  • 腾讯云快速建站百度指数怎么提升