网站ftp地址是什么开店怎么做会员系统

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

网站ftp地址是什么,开店怎么做会员系统,游戏建模师工资一般多少,个人免费网站注册目录 一、 啥是建造者模式#xff1f;二、 为什么要用建造者模式#xff1f;三、 建造者模式怎么实现#xff1f;四、 建造者模式的应用场景五、 建造者模式的优点和缺点六、 总结 #x1f31f;我的其他文章也讲解的比较有趣#x1f601;#xff0c;如果喜欢博主的讲解方… 目录 一、 啥是建造者模式二、 为什么要用建造者模式三、 建造者模式怎么实现四、 建造者模式的应用场景五、 建造者模式的优点和缺点六、 总结 我的其他文章也讲解的比较有趣如果喜欢博主的讲解方式可以多多支持一下感谢 了解原型模式请看 (四)趣学设计模式 之 原型模式 这篇文章带你详细认识一下设计模式中的建造者模式 一、 啥是建造者模式 建造者模式就像组装乐高玩具 你有一堆零件想要拼出一个复杂的模型比如一辆汽车 或者一栋房子 但是直接拼太麻烦了容易出错而且不同的汽车和房子拼装步骤可能不一样。 建造者模式就是把组装过程分解成一步一步的每一步负责一部分比如安装引擎、安装轮胎、刷油漆等等每一步都由专门的工人具体建造者来完成最后把所有部分组合起来就得到了完整的模型 对象创建过程复杂 就像盖房子 需要打地基、砌墙、安装门窗、装修等等一步都不能少而且顺序也很重要需要灵活控制对象创建过程 就像定制汽车 可以根据自己的喜好选择不同的引擎、轮胎、颜色等等每个配置都会影响最终的汽车希望隐藏对象内部的构建细节 就像吃汉堡 你只想吃不想知道它是怎么做的更不想知道厨师是怎么一步一步把汉堡做出来的 二、 为什么要用建造者模式 用建造者模式好处多多 分工明确 每个建造者负责一部分职责清晰代码更易维护 就像盖房子有专门的泥瓦匠砌墙有专门的木匠安装门窗每个人都只负责自己的部分不会互相干扰灵活定制 可以根据需要选择不同的建造者创建不同配置的对象 就像定制汽车可以选择不同的引擎、轮胎、颜色等等最终得到一辆完全符合自己需求的汽车隐藏细节 客户端不用关心对象的构建过程只需要知道最终的结果 就像吃汉堡你只需要知道汉堡很好吃不用关心厨师是怎么一步一步把汉堡做出来的代码复用 相同的构建步骤可以被不同的建造者复用 就像盖房子不同的房子可能都需要打地基这个步骤就可以被不同的建造者复用 三、 建造者模式怎么实现 建造者模式主要包含以下几个角色 产品Product 最终要创建的对象就像乐高模型、汽车、房子等等抽象建造者Builder 定义了构建产品的接口就像乐高说明书、汽车设计图纸、房屋设计图纸等等 它规定了构建产品的各个步骤但是具体的实现由具体建造者来完成具体建造者ConcreteBuilder 实现了抽象建造者的接口负责构建产品的各个部分就像乐高工人、汽车工人、建筑工人等等 他们按照抽象建造者的规定一步一步地构建产品指挥者Director 负责安排构建的顺序就像乐高设计师、汽车设计师、房屋设计师等等 他们知道构建产品的正确顺序并指挥具体建造者按照这个顺序来构建产品 代码示例 // 1. 产品类 (Product) class Computer {private String cpu; // CPUprivate String ram; // 内存private String hardDisk; // 硬盘private String graphicsCard; // 显卡// 设置 CPUpublic void setCpu(String cpu) {this.cpu cpu;}// 设置 内存public void setRam(String ram) {this.ram ram;}// 设置 硬盘public void setHardDisk(String hardDisk) {this.hardDisk hardDisk;}// 设置 显卡public void setGraphicsCard(String graphicsCard) {this.graphicsCard graphicsCard;}// 重写 toString 方法方便打印电脑信息Overridepublic String toString() {return Computer{ cpu cpu \ , ram ram \ , hardDisk hardDisk \ , graphicsCard graphicsCard \ };} }// 2. 抽象建造者 (Builder) interface ComputerBuilder {void buildCpu(String cpu); // 构建 CPUvoid buildRam(String ram); // 构建 内存void buildHardDisk(String hardDisk); // 构建 硬盘void buildGraphicsCard(String graphicsCard); // 构建 显卡Computer build(); // 返回最终产品 }// 3. 具体建造者 (ConcreteBuilder) class GamingComputerBuilder implements ComputerBuilder {private Computer computer new Computer(); // 创建一个电脑对象// 构建 CPUOverridepublic void buildCpu(String cpu) {computer.setCpu(cpu);}// 构建 内存Overridepublic void buildRam(String ram) {computer.setRam(ram);}// 构建 硬盘Overridepublic void buildHardDisk(String hardDisk) {computer.setHardDisk(hardDisk);}// 构建 显卡Overridepublic void buildGraphicsCard(String graphicsCard) {computer.setGraphicsCard(graphicsCard);}// 返回最终产品Overridepublic Computer build() {return computer;} }// 4. 指挥者 (Director) class ComputerDirector {private ComputerBuilder builder; // 依赖一个 ComputerBuilder// 构造函数传入一个 ComputerBuilderpublic ComputerDirector(ComputerBuilder builder) {this.builder builder;}// 构建电脑public Computer construct(String cpu, String ram, String hardDisk, String graphicsCard) {builder.buildCpu(cpu); // 构建 CPUbuilder.buildRam(ram); // 构建 内存builder.buildHardDisk(hardDisk); // 构建 硬盘builder.buildGraphicsCard(graphicsCard); // 构建 显卡return builder.build(); // 返回最终产品} }// 5. 客户端使用 public class Client {public static void main(String[] args) {// 创建具体建造者GamingComputerBuilder gamingComputerBuilder new GamingComputerBuilder();// 创建指挥者ComputerDirector computerDirector new ComputerDirector(gamingComputerBuilder);// 构建电脑Computer gamingComputer computerDirector.construct(Intel i9, 32GB, 1TB SSD, Nvidia RTX 3080);// 打印电脑信息System.out.println(游戏电脑: gamingComputer);} }代码解释 Computer产品类表示电脑。 就像乐高模型是最终要组装完成的东西ComputerBuilder抽象建造者定义了构建电脑的接口。 就像乐高说明书规定了组装电脑的各个步骤GamingComputerBuilder具体建造者实现了 ComputerBuilder 接口负责构建游戏电脑。 就像乐高工人按照说明书一步一步地组装电脑ComputerDirector指挥者负责安排构建的顺序。 就像乐高设计师知道组装电脑的正确顺序并指挥工人按照这个顺序来组装电脑 输出结果 游戏电脑: Computer{cpuIntel i9, ram32GB, hardDisk1TB SSD, graphicsCardNvidia RTX 3080}分析 客户端只需要告诉指挥者需要什么配置的电脑指挥者会安排具体建造者一步一步地构建电脑最后返回完整的电脑对象。 客户端不需要关心电脑是怎么一步一步组装起来的只需要知道最终的结果 四、 建造者模式的应用场景 创建复杂的对象 就像创建汽车 、房子 、飞机 ✈️ 等等需要多个步骤才能完成而且每个步骤都很复杂需要灵活控制对象创建过程 就像定制家具 可以根据自己的喜好选择不同的材料、颜色和尺寸最终得到一件完全符合自己需求的家具需要隐藏对象内部的构建细节 就像制作蛋糕 你只想吃不想知道它是怎么做的更不想知道厨师是怎么一步一步把蛋糕做出来的需要创建不同表示的对象 就像创建不同风格的房子 ️可以使用不同的建造者来创建比如现代风格的房子、古典风格的房子等等 五、 建造者模式的优点和缺点 优点 分工明确 每个建造者负责一部分职责清晰代码更易维护 就像一个团队每个人都只负责自己的部分不会互相干扰提高了工作效率灵活定制 可以根据需要选择不同的建造者创建不同配置的对象 就像定制汽车可以选择不同的引擎、轮胎、颜色等等最终得到一辆完全符合自己需求的汽车隐藏细节 客户端不用关心对象的构建过程只需要知道最终的结果 就像吃汉堡你只需要知道汉堡很好吃不用关心厨师是怎么一步一步把汉堡做出来的代码复用 相同的构建步骤可以被不同的建造者复用 就像盖房子不同的房子可能都需要打地基这个步骤就可以被不同的建造者复用减少了代码的重复易于扩展 可以很容易地添加新的建造者来创建新的对象类型 就像乐高玩具可以不断推出新的模型只需要添加新的乐高说明书和乐高工人即可 缺点 代码复杂 需要创建多个类代码量比较大 就像一个团队需要更多的人员增加了管理的复杂性抽象性高 理解起来比较抽象需要一定的设计经验 就像学习乐高说明书需要一定的空间想象能力修改困难 如果需要修改产品的内部结构可能需要修改多个类 就像修改乐高模型可能需要修改乐高说明书和乐高零件 六、 总结 建造者模式就像组装乐高玩具把复杂的对象创建过程分解成一步一步的适用于对象创建过程复杂、需要灵活控制对象创建过程、希望隐藏对象内部的构建细节的场景主要包含产品、抽象建造者、具体建造者和指挥者四个角色优点是分工明确、灵活定制、隐藏细节、代码复用、易于扩展缺点是代码复杂、抽象性高、修改困难 希望这篇文章能让你彻底理解建造者模式