网站首页 > java教程 正文
建造者模式(Builder Pattern)是GOF23种设计模式之一,它是属于一种创建型设计模式,主要解决的问题就是在创建一些复杂对象的时候,因为参数过多而导致的对象创建混乱而不易利于理解的问题。
通过建造者模式来将复杂对象的构建过程与其表示进行分离,通过这样的方式就可以实现不同构建不同的表示。使得整个的代码结构更加的易于理解。
建造者模式介绍
建造者模式中包含了如下的几个核心的对象。如下图所示。
产品(Product)
该对象表示要构建的复杂对象也就是最终我们要使用的对象。在产品类中包含了产品的属性以及产品的方法。
抽象建造者(Builder)
这个对象,就是用来定义用于构建产品的各个部件的抽象接口,包含了设置产品的属性和返回最终产品的方法等。
具体建造者(Concrete Builder)
实现了抽象建造者接口,具体负责构建产品的各个部件,通常每个具体建造者对应一个特定的产品表示。
指挥者(Director)
负责调用具体建造者来构建产品。指挥者根据客户端的需求调用具体建造者的方法来构建产品。
建造者模式的使用场景
建造者模式常用于创建具有多个可选参数的复杂对象,如配置对象、文档对象等。
创建复杂对象
在开发中,当我们遇到一个属性较多的对象的时候,通过建造者模式可以帮助实现对于这些属性的分步的构建过程,这样可以简化创建对象的过程,并且可以按照不同的需求来创建不同的对象。
构造函数参数太多
在创建对象的过程中,由于对象的构造函数参数较多,并且组合形式不同的时候,通过传统的构造函数重载的方法,可能会导致整个对象创建变得非常复杂,但是通过建造者模式就可以通过链式的调用来创建不同的对象,从而避免因为构造函数参数过多而导致的很多问题。
创建不同的对象
建造者模式可以根据用户的不同需求来创建不同的产品对象,这样可以在不修改客户端代码的情况下就可以实现不同对象的创建操作。
隐藏对象构建的细节
当客户端不需要知道对象的构建细节的时候,只需要指挥者来提供对象,这种情况下,我们就可以通过建造者模式来创建对象,这样能够有效的隐藏对象的具体的构建细节。保证了程序代码的相对独立。
如何使用建造者模式?
下面是一个简单的示例,演示如何在Java中使用建造者模式创建一个用户对象,如下所示。
public class User {
private String username;
private String email;
private int age;
// 私有构造函数,只能通过Builder来创建User对象
private User(String username, String email, int age) {
this.username = username;
this.email = email;
this.age = age;
}
// Builder类用于构建User对象
public static class Builder {
private String username;
private String email;
private int age;
public Builder setUsername(String username) {
this.username = username;
return this;
}
public Builder setEmail(String email) {
this.email = email;
return this;
}
public Builder setAge(int age) {
this.age = age;
return this;
}
public User build() {
// 在build()方法中创建User对象
return new User(username, email, age);
}
}
// Getter方法省略
}
通过建造者模式来实现具体的用户调用。
public class Main {
public static void main(String[] args) {
// 使用Builder来构建User对象
User user = new User.Builder()
.setUsername("John")
.setEmail("john@example.com")
.setAge(30)
.build();
// 使用构建好的User对象
System.out.println("Username: " + user.getUsername());
System.out.println("Email: " + user.getEmail());
System.out.println("Age: " + user.getAge());
}
}
上面的代码中,通过使用建造者模式,在创建对象的时候我们不需要去创建多个构造函数,而是通过链式调用的方式,来按需创建参数。同时对于User对象的创建细节也是做到了很好的隐藏。
总结
根据上面的介绍,我们知道,建造者设计模式,比较适用于对于复杂对象的创建过程,尤其是在对象创建的过程中有很多的参数的时候,我们可以通过链式调用的方式来传入需要的参数来构建一个合适的对象。这种灵活、清晰的实现为程序的可扩展性提供了基础的支持。通过建造者模式,我们也可以隐藏对象的实现细节,也是符合面向对象的三大特性之一的封装的特点。
- 上一篇: Java设计模式-建造者模式
- 下一篇: JAVA建造模式的适用场景,优缺点你知道吗,这篇文章彻底讲透
猜你喜欢
- 2025-08-05 深入理解 Spring 设计模式:从实现原理到思想精髓
- 2025-08-05 工作中最常用的 8 种设计模式
- 2025-08-05 一文读懂设计模式,看这篇就够了
- 2025-08-05 java设计模式之责任链模式
- 2025-08-05 从复杂到优雅:用建造者和责任链重塑代码架构
- 2025-08-05 带你读Effective系列:创建对象-Builder构建器
- 2025-08-05 面试官:JDK中都用了哪些设计模式?
- 2025-08-05 工厂、建造者、装饰器、适配器:解密JDK设计模式的实战妙用
- 2025-08-05 一天一个设计模式(五):建造者模式,构建优美的Java对象
- 2025-08-05 设计模式——浅谈模板方法模式与建造者模式的异同
你 发表评论:
欢迎- 08-05深入理解 Spring 设计模式:从实现原理到思想精髓
- 08-05工作中最常用的 8 种设计模式
- 08-05一文读懂设计模式,看这篇就够了
- 08-05java设计模式之责任链模式
- 08-05从复杂到优雅:用建造者和责任链重塑代码架构
- 08-05带你读Effective系列:创建对象-Builder构建器
- 08-05面试官:JDK中都用了哪些设计模式?
- 08-05工厂、建造者、装饰器、适配器:解密JDK设计模式的实战妙用
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)