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

学校网站建设的重要意义西安搜索引擎优化

学校网站建设的重要意义,西安搜索引擎优化,山西省网站建设,百度推送 wordpress建造者模式(Builder Pattern)是一种创建型设计模式,它将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。这种模式允许你分步骤构建一个复杂对象,并且可以在构建过程中进行不同的配置。 模式的核…

建造者模式(Builder Pattern)是一种创建型设计模式,它将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。这种模式允许你分步骤构建一个复杂对象,并且可以在构建过程中进行不同的配置。

模式的核心组件

建造者模式通常包含以下四个核心组件:

  1. 产品(Product):要构建的复杂对象。
  2. 抽象建造者(Builder):定义了构建产品各个部分的抽象接口。
  3. 具体建造者(Concrete Builder):实现抽象建造者接口,完成产品各部分的具体构建。
  4. 指挥者(Director):负责安排复杂对象的构建顺序,并使用建造者对象构建产品。

简单实现

让我们通过一个示例来详细说明建造者模式的实现。假设我们要构建一个电脑(Computer)对象,它包含 CPU、内存、硬盘和显卡等组件。

首先,定义产品类:

// 产品类:电脑
public class Computer {private String cpu;private String memory;private String hardDisk;private String graphicsCard;// 私有构造函数,只能通过Builder创建Computerprivate Computer(Builder builder) {this.cpu = builder.cpu;this.memory = builder.memory;this.hardDisk = builder.hardDisk;this.graphicsCard = builder.graphicsCard;}// Getter方法public String getCpu() {return cpu;}public String getMemory() {return memory;}public String getHardDisk() {return hardDisk;}public String getGraphicsCard() {return graphicsCard;}@Overridepublic String toString() {return "Computer{" +"cpu='" + cpu + '\'' +", memory='" + memory + '\'' +", hardDisk='" + hardDisk + '\'' +", graphicsCard='" + graphicsCard + '\'' +'}';}// 静态内部类:Builderpublic static class Builder {private String cpu;private String memory;private String hardDisk;private String graphicsCard;// 设置CPU,返回Builder实例以便链式调用public Builder setCpu(String cpu) {this.cpu = cpu;return this;}// 设置内存,返回Builder实例以便链式调用public Builder setMemory(String memory) {this.memory = memory;return this;}// 设置硬盘,返回Builder实例以便链式调用public Builder setHardDisk(String hardDisk) {this.hardDisk = hardDisk;return this;}// 设置显卡,返回Builder实例以便链式调用public Builder setGraphicsCard(String graphicsCard) {this.graphicsCard = graphicsCard;return this;}// 构建Computer对象public Computer build() {// 可以在这里添加参数验证逻辑if (cpu == null || memory == null || hardDisk == null) {throw new IllegalArgumentException("CPU、内存和硬盘是必需的");}return new Computer(this);}}
}

然后,使用建造者模式创建电脑对象:

public class BuilderPatternExample {public static void main(String[] args) {// 使用Builder创建电脑对象Computer gamingComputer = new Computer.Builder().setCpu("Intel i9-12900K").setMemory("32GB DDR5").setHardDisk("2TB NVMe SSD").setGraphicsCard("NVIDIA RTX 3080").build();Computer officeComputer = new Computer.Builder().setCpu("Intel i5-12400").setMemory("16GB DDR4").setHardDisk("512GB SSD").build(); // 办公电脑可以不设置独立显卡System.out.println("游戏电脑配置:" + gamingComputer);System.out.println("办公电脑配置:" + officeComputer);}
}

如上是一个建造者模式的简单实现,是不是感觉超级简单,下面是经典的实现方式

 经典实现

// 1. 产品类:电脑
public class Computer {private String cpu;private String memory;private String hardDisk;private String graphicsCard;// 构造函数和Getter方法public Computer(String cpu, String memory, String hardDisk, String graphicsCard) {this.cpu = cpu;this.memory = memory;this.hardDisk = hardDisk;this.graphicsCard = graphicsCard;}@Overridepublic String toString() {return "Computer{" +"cpu='" + cpu + '\'' +", memory='" + memory + '\'' +", hardDisk='" + hardDisk + '\'' +", graphicsCard='" + graphicsCard + '\'' +'}';}
}// 2. 抽象建造者接口
public interface ComputerBuilder {void buildCPU();void buildMemory();void buildHardDisk();void buildGraphicsCard();Computer getComputer();
}// 3. 具体建造者:游戏电脑建造者
public class GamingComputerBuilder implements ComputerBuilder {private Computer computer;public GamingComputerBuilder() {this.computer = new Computer(null, null, null, null);}@Overridepublic void buildCPU() {computer.setCpu("Intel i9-12900K");}@Overridepublic void buildMemory() {computer.setMemory("32GB DDR5");}@Overridepublic void buildHardDisk() {computer.setHardDisk("2TB NVMe SSD");}@Overridepublic void buildGraphicsCard() {computer.setGraphicsCard("NVIDIA RTX 3080");}@Overridepublic Computer getComputer() {return computer;}
}// 3. 具体建造者:办公电脑建造者
public class OfficeComputerBuilder implements ComputerBuilder {private Computer computer;public OfficeComputerBuilder() {this.computer = new Computer(null, null, null, null);}@Overridepublic void buildCPU() {computer.setCpu("Intel i5-12400");}@Overridepublic void buildMemory() {computer.setMemory("16GB DDR4");}@Overridepublic void buildHardDisk() {computer.setHardDisk("512GB SSD");}@Overridepublic void buildGraphicsCard() {// 办公电脑可以不设置独立显卡}@Overridepublic Computer getComputer() {return computer;}
}// 4. 指挥者:控制构建过程
public class ComputerDirector {private ComputerBuilder builder;public ComputerDirector(ComputerBuilder builder) {this.builder = builder;}public void constructComputer() {builder.buildCPU();builder.buildMemory();builder.buildHardDisk();builder.buildGraphicsCard();}public Computer getComputer() {return builder.getComputer();}
}// 客户端代码
public class Client {public static void main(String[] args) {// 构建游戏电脑ComputerBuilder gamingBuilder = new GamingComputerBuilder();ComputerDirector director = new ComputerDirector(gamingBuilder);director.constructComputer();Computer gamingComputer = director.getComputer();// 构建办公电脑ComputerBuilder officeBuilder = new OfficeComputerBuilder();director = new ComputerDirector(officeBuilder);director.constructComputer();Computer officeComputer = director.getComputer();System.out.println("游戏电脑配置:" + gamingComputer);System.out.println("办公电脑配置:" + officeComputer);}
}

模式的优点

  1. 分离构建和表示:使得构建算法可以独立于产品的表示,提高了系统的可扩展性。
  2. 分步构建:可以分步骤构建一个复杂对象,允许在构建过程中进行不同的配置。
  3. 链式调用:通过链式调用方法设置属性,使代码更简洁易读。
  4. 参数验证:可以在build()方法中添加参数验证逻辑,确保对象的完整性。

模式的应用场景

  1. 复杂对象构建:当创建一个对象需要很多步骤,并且这些步骤的顺序可能不同。
  2. 可选参数较多:当一个类的构造函数有很多参数,特别是其中很多是可选参数时。
  3. 构建不同表示:当需要创建同一个产品的不同表示时。

与其他模式的比较

  • 工厂模式:工厂模式关注的是整体对象的创建,而建造者模式关注的是对象的分步构建。
  • 抽象工厂模式:抽象工厂模式返回的是一系列相关产品,而建造者模式返回的是一个完整的产品。

建造者模式在实际开发中非常常用,特别是在创建复杂对象时。它能够使代码更加清晰、灵活,并且易于维护。另外Lombok 的@Builder注解是一个强大的工具,它能自动生成流式 API 风格的 "建造者模式 (Builder Pattern)" 代码,从而避免编写大量样板代码。使用该注解可以让代码更简洁,同时保持建造者模式的优势。

http://www.dtcms.com/wzjs/276102.html

相关文章:

  • 广州网络广告推广seo优化排名教程
  • 创建网站选哪家好百度竞价推广点击软件
  • 网站怎么做实名认证吗百度一下你就知道官网网址
  • Centos建网站必须域名怎么联系百度客服
  • 网站手机验证码怎么做网络推广方式有哪几种
  • 昆仑万维做网站怎样做关键词排名优化
  • 高校网站建设招标公告排名
  • 摄像机怎么在自己家网站做直播seo优化快速排名技术
  • 做网站全程指导网络营销和传统营销的区别
  • wordpress网页搭建报名表网站运营推广选择乐云seo
  • 亚马逊跨境电商新手入门seo排名关键词点击
  • 织梦网站怎么安装搜索引擎优化的步骤
  • 陕西营销型网站建设seo外包优化公司
  • 成都麦卡网络做网站开发怎么样哪里有培训网
  • 专业沈阳网站建设搜索引擎入口
  • 织梦电影网站免费模板google关键词排名优化
  • 滨州做网站的谷歌全球营销
  • 长春火车站到长春机场大巴时刻表网站查询系统
  • 今日油价92汽油价关键词优化seo
  • 网站开发总结文档新媒体seo指的是什么
  • 我国建设政府官方门户网站的要求seo推广怎么入门
  • 经过开发建设 网站上线了seo网站推广首页排名
  • 小草网络 网站建设怎样做竞价推广
  • 武汉建站公司哪个好交易链接
  • 织梦做网站的详情产品市场推广方案
  • 化工网站建站模板阿里大数据分析平台
  • 医药网站建设谷歌浏览器app
  • 网站开发游戏程序开发百度大全下载
  • 鹤壁做网站的公司上海sem
  • 自己想做一个网站怎么做的深圳广告公司排名