怎么使用Java建造者模式构建复杂对象
作者:水悠悠予安
时间:2023-05-11
浏览:4
介绍Java中的建造者模式是一种创建型设计模式,它的主要目的是为了通过一系列简单的步骤构建复杂的对象,允许创建复杂对象的不同表示形式,同时隐藏构造细节.它能够逐步构建对象,即先创建基本对象,然后逐步添加更多属性或部件,直到最终构建出完整的对象.该模式的主要思想是将对象的构造过程分解成多个步骤,每个步骤都可以独立运行,并且在每个步骤完成后都可以返回一个中间状态,然后使用一个导演类来协调这些步骤,最终创建出完整的对象.建造者模式通常包括一下角色:产品类(Product):被构造出来的复杂对象,它具有多个属性或
本文目录
介绍
Java中的建造者模式是一种创建型设计模式,它的主要目的是为了通过一系列简单的步骤构建复杂的对象,允许创建复杂对象的不同表示形式,同时隐藏构造细节.它能够逐步构建对象,即先创建基本对象,然后逐步添加更多属性或部件,直到最终构建出完整的对象.
该模式的主要思想是将对象的构造过程分解成多个步骤,每个步骤都可以独立运行,并且在每个步骤完成后都可以返回一个中间状态,然后使用一个导演类来协调这些步骤,最终创建出完整的对象.
建造者模式通常包括一下角色:
产品类(Product):被构造出来的复杂对象,它具有多个属性或部件.
抽象构造者类(Builder):定义了构建复杂对象所需的方法和属性.
具体建造者类(ConcreteBuilder):实现抽象建造者类中定义的方法和属性,并返回最终构造的对象
导演类(Director):负责协调各个具体建造者类的构建过程,以及返回最终构造的对象,
实现
首先创建一个产品类
package com.fanqiechaodan.build;
import lombok.Data;
/**
* @Classname Car
* @Description 产品类
*/
@Data
public class Car {
private String brand;
private String model;
private String color;
private int maxSpeed;
}其次创建抽象建造者类
package com.fanqiechaodan.build;
/**
* @Classname CarBuilder
* @Description 抽象建造者类
*/
public abstract class CarBuilder {
protected Car car;
public CarBuilder(){
car = new Car();
}
public abstract void buildBrand();
public abstract void buildModel();
public abstract void buildColor();
public abstract void buildMaxSpeed();
public Car getCar() {
return car;
}
}然后创建具体构造者类
package com.fanqiechaodan.build;
/**
* @Classname BMWBuilder
* @Description 具体构造者类
*/
public class BMWBuilder extends CarBuilder {
@Override
public void buildBrand() {
car.setBrand("BMW");
}
@Override
public void buildModel() {
car.setModel("X6");
}
@Override
public void buildColor() {
car.setColor("Black");
}
@Override
public void buildMaxSpeed() {
car.setMaxSpeed(218);
}
}创建导演类
package com.fanqiechaodan.build;
/**
* @Classname Director
* @Description 导演类
*/
public class Director {
private CarBuilder carBuilder;
public Director(CarBuilder carBuilder) {
this.carBuilder = carBuilder;
}
public Car constructCar() {
carBuilder.buildBrand();
carBuilder.buildColor();
carBuilder.buildMaxSpeed();
carBuilder.buildModel();
return carBuilder.getCar();
}
}测试
package com.fanqiechaodan.build;
/**
* @Classname Demo
* @Description 建造者模式
*/
public class Demo {
public static void main(String[] args) {
CarBuilder carBuilder = new BMWBuilder();
Director director = new Director(carBuilder);
Car car = director.constructCar();
System.out.println(car.toString());
}
}
作者最新文章
动漫共和国在线观看地址及入口
2026-11-04 12:06
立刻MV如何查看立刻MV官方操作指引文档
2026-11-02 14:05
抖音创作平台官网登录入口
2026-11-02 10:38
Xshell连接SSH失败怎么办?5步排查网络、代理与认证问题
2026-10-30 14:30
樱花动漫官方正版官网入口在哪_樱花动漫网址2027最新分享
2026-10-28 19:21
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































