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

涉密项目单位网站建设流程嘉兰图工业设计公司现状

涉密项目单位网站建设流程,嘉兰图工业设计公司现状,建网站 英文,网页设计师的认识一、引言 在软件开发中,我们经常会遇到需要创建复杂对象的场景。例如,构建一个包含多个可选参数的对象时,传统的构造函数或Setter方法可能导致代码臃肿、难以维护。此时,建造者模式(Builder Pattern)便成为…

一、引言

在软件开发中,我们经常会遇到需要创建复杂对象的场景。例如,构建一个包含多个可选参数的对象时,传统的构造函数或Setter方法可能导致代码臃肿、难以维护。此时,建造者模式(Builder Pattern)便成为一种优雅的解决方案。它通过分步骤构建对象,将对象的创建过程与其表示分离,从而提高代码的可读性和可维护性。


二、什么是建造者模式?

建造者模式(Builder Pattern)是一种创建型设计模式,其核心思想是通过分步骤构造复杂对象,最终返回一个完整的产品。它允许相同的构建过程创建不同的表示,同时避免构造函数参数过多的问题。

例如:Person person1=new Person(10个参数)

如果只需要其中3个的话,就得提供一个3个参数的构造函数

1.核心角色

  1. Product(产品):最终构建的复杂对象。
  2. Builder(抽象建造者):定义构建产品的抽象步骤。
  3. ConcreteBuilder(具体建造者):实现Builder接口,完成具体构建逻辑。
  4. Director(指挥者,可选):控制构建流程,协调建造者的步骤。

2.适用场景

  • 创建包含多个部件的复杂对象(如配置类、HTTP请求对象)。
  • 需要控制对象的创建过程(分步骤构建)。
  • 需要构建不同表示的对象(相同构建过程,不同实现)。
  • 希望避免构造器参数过多(解决“伸缩构造函数”问题)。

三、代码示例:

1.电脑

⑴.产品 (Product)Computer类表示要构建的电脑

产品提供每个字段的set方法

// 产品类:电脑
public class Computer {private String cpu;private String memory;private String hardDisk;private String graphicsCard;private String monitor;private String keyboard;private String mouse;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 setGraphicsCard(String graphicsCard) {this.graphicsCard = graphicsCard;}public void setMonitor(String monitor) {this.monitor = monitor;}public void setKeyboard(String keyboard) {this.keyboard = keyboard;}public void setMouse(String mouse) {this.mouse = mouse;}@Overridepublic String toString() {return "Computer{" +"cpu='" + cpu + '\'' +", memory='" + memory + '\'' +", hardDisk='" + hardDisk + '\'' +", graphicsCard='" + graphicsCard + '\'' +", monitor='" + monitor + '\'' +", keyboard='" + keyboard + '\'' +", mouse='" + mouse + '\'' +'}';}
}    

⑵.抽象建造者 (Builder)ComputerBuilder接口定义了构建电脑各部分的方法

接口定义二次封装的构建方法

// 抽象建造者接口
public interface ComputerBuilder {void buildCPU();void buildMemory();void buildHardDisk();void buildGraphicsCard();void buildMonitor();void buildKeyboard();void buildMouse();Computer getComputer();
}    

⑶.具体建造者 (ConcreteBuilder)

GamingComputerBuilderOfficeComputerBuilder实现了抽象接口

// 具体建造者:游戏电脑建造者
public class GamingComputerBuilder implements ComputerBuilder {private Computer computer = new Computer();@Overridepublic void buildCPU() {computer.setCpu("Intel i9-12900K");}@Overridepublic void buildMemory() {computer.setMemory("32GB DDR5 5200MHz");}@Overridepublic void buildHardDisk() {computer.setHardDisk("2TB NVMe SSD");}@Overridepublic void buildGraphicsCard() {computer.setGraphicsCard("NVIDIA RTX 4090");}@Overridepublic void buildMonitor() {computer.setMonitor("4K 144Hz Gaming Monitor");}@Overridepublic void buildKeyboard() {computer.setKeyboard("Mechanical Gaming Keyboard");}@Overridepublic void buildMouse() {computer.setMouse("High Precision Gaming Mouse");}@Overridepublic Computer getComputer() {return computer;}
}    

// 具体建造者:办公电脑建造者
public class OfficeComputerBuilder implements ComputerBuilder {private Computer computer = new Computer();@Overridepublic void buildCPU() {computer.setCpu("Intel i5-12400");}@Overridepublic void buildMemory() {computer.setMemory("16GB DDR4 3200MHz");}@Overridepublic void buildHardDisk() {computer.setHardDisk("512GB NVMe SSD");}@Overridepublic void buildGraphicsCard() {computer.setGraphicsCard("Integrated Graphics");}@Overridepublic void buildMonitor() {computer.setMonitor("24-inch Full HD Monitor");}@Overridepublic void buildKeyboard() {computer.setKeyboard("Wireless Keyboard");}@Overridepublic void buildMouse() {computer.setMouse("Wireless Mouse");}@Overridepublic Computer getComputer() {return computer;}
}    

⑷.指挥者 (Director)

ComputerDirector控制构建过程的顺序

// 指挥者:电脑装配指导
public class ComputerDirector {private ComputerBuilder computerBuilder;public ComputerDirector(ComputerBuilder computerBuilder) {this.computerBuilder = computerBuilder;}public void setComputerBuilder(ComputerBuilder computerBuilder) {this.computerBuilder = computerBuilder;}public Computer constructComputer() {computerBuilder.buildCPU();computerBuilder.buildMemory();computerBuilder.buildHardDisk();computerBuilder.buildGraphicsCard();computerBuilder.buildMonitor();computerBuilder.buildKeyboard();computerBuilder.buildMouse();return computerBuilder.getComputer();}
}    

⑸.测试

// 演示程序
public class BuilderPatternDemo {public static void main(String[] args) {// 创建具体建造者ComputerBuilder gamingBuilder = new GamingComputerBuilder();ComputerBuilder officeBuilder = new OfficeComputerBuilder();// 创建指挥者并指定建造者ComputerDirector director = new ComputerDirector(gamingBuilder);// 构建游戏电脑Computer gamingComputer = director.constructComputer();System.out.println("游戏电脑配置:");System.out.println(gamingComputer);// 切换为办公电脑建造者director.setComputerBuilder(officeBuilder);// 构建办公电脑Computer officeComputer = director.constructComputer();System.out.println("\n办公电脑配置:");System.out.println(officeComputer);}
}    

2.建造一座房屋

以下是一个完整、简单且可运行的Java代码示例,演示如何通过建造者模式构建一个House对象。

⑴. 产品类(Product)

public class House {private final String walls;private final String roof;private final String windows;// 私有构造函数,防止外部直接创建private House(Builder builder) {this.walls = builder.walls;this.roof = builder.roof;this.windows = builder.windows;}@Overridepublic String toString() {return "House{" +"walls='" + walls + '\'' +", roof='" + roof + '\'' +", windows='" + windows + '\'' +'}';}// 静态内部类:建造者public static class Builder {private String walls;private String roof;private String windows;// 设置墙壁public Builder setWalls(String walls) {this.walls = walls;return this;}// 设置屋顶public Builder setRoof(String roof) {this.roof = roof;return this;}// 设置窗户public Builder setWindows(String windows) {this.windows = windows;return this;}// 构建并返回House对象public House build() {return new House(this);}}
}

⑵.客户端调用(直接使用建造者)

public class Client {public static void main(String[] args) {// 使用建造者模式构建一座房屋House house = new House.Builder().setWalls("Brick").setRoof("Tile").setWindows("Double Glazed").build();System.out.println(house);}
}

⑶.可选:指挥者类(Director)

如果构建流程较为固定,可以通过Director类封装构建逻辑:

public class Director {// 构建标准房屋public House constructStandardHouse() {return new House.Builder().setWalls("Concrete").setRoof("Asphalt").setWindows("Single Glazed").build();}// 构建豪华房屋public House constructLuxuryHouse() {return new House.Builder().setWalls("Stone").setRoof("Wood").setWindows("Triple Glazed").build();}
}

⑷.客户端调用(通过Director)

public class ClientWithDirector {public static void main(String[] args) {Director director = new Director();House standardHouse = director.constructStandardHouse();House luxuryHouse = director.constructLuxuryHouse();System.out.println("Standard House: " + standardHouse);System.out.println("Luxury House: " + luxuryHouse);}
}

四、实际应用场景

建造者模式在Java生态中广泛应用于以下场景:

  • Java内置类StringBuilder的链式调用(如append()方法)。
  • 复杂对象构建:如HTTP请求对象、数据库查询构建器。
  • 配置类:例如,构建一个包含多个可选参数的配置对象。

五、总结

建造者模式通过分步骤构建复杂对象,将对象的创建过程与表示分离,解决了构造函数参数过多、代码臃肿的问题。通过链式调用和可选参数的支持,它提高了代码的可读性和可维护性。在实际开发中,无论是构建一个简单的房屋对象,还是处理复杂的业务需求,建造者模式都能提供清晰的解决方案。

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

相关文章:

  • 有什么外贸网站免费主题wordpress
  • 云虚服务器网站建设网站建设平台哪个好
  • 海洋网站建设公司怎么弄一个网站平台
  • 互联网app下载专业seo网站优化推广排名教程
  • 外贸官网建站个人域名做邮箱网站
  • 厦门市建设局网站住房保障专栏网站建设Z亿玛酷1流量订制
  • 自媒体网站建设论文关于网站建设的论坛
  • 低价网站建设浩森宇特宁波制作网页哪家好
  • 雇人做淘宝网站多少钱网站分析工具
  • 淘宝网站建设的特点自己做网站的域名
  • 做网站分几个步骤长沙网站技术专家
  • 做网站常用的背景图像关于设计图的网站
  • 网站哪里有做的北京企业网站怎么建设
  • 全国卫生机构建设管理系统网站太原seo代理计费
  • 天津城乡住房建设厅网站首页高端网站开发平台
  • 手机系统网站帝国cms 做的博客网站
  • 二级目录做网站商场设计软件
  • 网站建设计入哪个科目排名网站建设
  • 怎么做外贸企业网站京东商城网站的搜索引擎营销做的案例分析
  • flash是怎么做网站的网站备案 营业执照副本
  • 网站平台建设的重要性wordpress创建页面模板
  • 用于网站建设的图片什么叫网页什么叫网站
  • 建设校园门户网站方案黄圃网站建设
  • 包头网站优化网络系统管理与维护电大考试题
  • 泌阳网站建设iis 网站打不开
  • 为什么网站有不同的扩展名WordPress会员注册去掉邮箱
  • 做电影网站怎么盈利杭州网站建设方案书
  • 长沙网站建设设计如何用ps做网站首页图片
  • 做网站必须要有数据库wordpress怎么爆出版本
  • 动易cms网站后台很慢是什么原因网站建设专业如何做到廉洁自律