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

设计模式之建造者模式精讲

也叫生成器模式。将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

在建造者模式中,有如下4个角色:

  • 抽象建造者(Builder):用于规范产品的各个组成部分,并进行抽象,一般独立于应用程序的逻辑。
  • 具体建造者(Concrete Builder):实现抽象建造者的所有方法,并返回一个组建好的产品实例(Product)。
  • 产品(Product):建造中的对象,一个系统会有多于一个的产品类,这些产品不一定有共同的接口,可以是不相关的。
  • 导演(Director):该角色负责安排已有模块的顺序,指导Builder的建造过程,可以有多个Director角色。

我们通过一个生产不同品牌电脑的例子来加深理解:

public abstract class Computer {protected String cpu;protected String band;public abstract void assemble();
}public class DellComputer extends Computer {@Overridepublic void assemble() {this.band = "Dell";}
}public class HpComputer extends Computer {@Overridepublic void assemble() {this.band = "Hp";}
}public abstract class AbstractBuilder {protected Computer computer;public abstract void setCpu();public abstract Computer build();
}public class DellBuilder extends AbstractBuilder {public DellBuilder() {this.computer = new DellComputer();}@Overridepublic void setCpu() {this.computer.cpu = "intel";}@Overridepublic Computer build() {this.computer.assemble();return this.computer;}
}public class HpBuilder extends AbstractBuilder {public HpBuilder() {this.computer = new HpComputer();}@Overridepublic void setCpu() {this.computer.cpu = "intel";}@Overridepublic Computer build() {this.computer.assemble();return this.computer;}
}public class Director {private AbstractBuilder builder;public Director(AbstractBuilder builder) {this.builder = builder;}public Computer create() {builder.setCpu();return builder.build();}
}

大家如果需要视频版本的讲解,可以关注下我的B站:

五、设计模式之建造者模式精讲

http://www.lryc.cn/news/328933.html

相关文章:

  • vue3源码解析——watch和watchEffect区别
  • 微服务(基础篇-006-Docker)
  • 深度学习算法概念介绍
  • 查找算法及查找常用数据结构总结
  • 大语言模型---强化学习
  • 前端三剑客 —— CSS (第二节)
  • 牛客NC31 第一个只出现一次的字符【simple map Java,Go,PHP】
  • 软考系统架构设计师(摘抄)01
  • 5G无线接入网和接口协议
  • 【力扣刷题日记】1173.即时食物配送I
  • 2024年github之node排行榜top50
  • 当我们在地址栏输入URL的时候浏览器发生了什么
  • 【研发日记】Matlab/Simulink开箱报告(十一)——Requirements Toolbox
  • Elastic 8.13:Elastic AI 助手中 Amazon Bedrock 的正式发布 (GA) 用于可观测性
  • MFC 截取对话框生成图片、截取整个屏幕(可取黑白反色或者整体图片取反色)
  • 【LeetCode: 331. 验证二叉树的前序序列化 + DFS】
  • 【Consul】Linux安装Consul保姆级教程
  • pytorch常用的模块函数汇总(1)
  • 素数的计数律:Π函数、歪斜数
  • 图像识别在农业领域的应用
  • 【JavaSE】java刷题--数组练习
  • 预处理、编译、汇编、链接过程
  • 3、Cocos Creator 节点和组件
  • 【js刷题:数据结构数组篇之长度最小的子数组】
  • 大话设计模式之装饰模式
  • 国赛大纲解读
  • 设计模式(5):原型模式
  • 【React】vite + react 项目,进行配置 eslint
  • Windows入侵排查
  • C语言每日一题