本文介绍: 建造者模式(Builder Pattern)是一种创建型设计模式,它用于构建复杂对象的表示。这种模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于解决复杂对象的逐步构建问题。分离复杂对象的构造和表示允许客户端不必了解内部组成的细节,就可以构造复杂的对象。通常用于创建具有多个部分的对象,特别是当这些部分需要通过多个步骤进行构建时。提供控制复杂性的方法。
定义:
建造者模式(Builder Pattern)是一种创建型设计模式,它用于构建复杂对象的表示。这种模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于解决复杂对象的逐步构建问题。
建造者模式的关键特点包括:
建造者模式通常涉及以下几个角色:
- 建造者(Builder):为创建一个产品对象的各个部件指定抽象接口。
- 具体建造者(Concrete Builder):实现Builder的接口以构造和装配该产品的各个部件。定义并明确它所创建的表示,并提供一个检索产品的接口。
- 指导者(Director):构造一个使用Builder接口的对象。
- 产品(Product):表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
这种模式在需要生成各种复杂对象时非常有用,特别是当这些对象的创建过程需要多个步骤时。通过独立控制过程和复杂对象的各个部分的构造,建造者模式提供了一种更灵活和可控的方式来创建复杂对象。
解决的问题:
使用场景:
- 复杂对象的构建:
- 构造参数多且复杂:
- 不同表示的对象:
- 当需要创建多个不同表示的相同类型对象时,建造者模式允许使用相同的构建过程创建不同的表示。
- 需要封装构建过程:
- 构建过程的步骤化:
- 不可变对象的创建:
示例代码:
// 产品类 - 计算机
public class Computer {
private String CPU;
private String memory;
private String storage;
private String screen;
private String operatingSystem;
private Computer(Builder builder) {
this.CPU = builder.CPU;
this.memory = builder.memory;
this.storage = builder.storage;
this.screen = builder.screen;
this.operatingSystem = builder.operatingSystem;
}
// getter方法
// 静态内部Builder类
public static class Builder {
private String CPU;
private String memory;
private String storage;
private String screen;
private String operatingSystem;
public Builder CPU(String CPU) {
this.CPU = CPU;
return this;
}
public Builder memory(String memory) {
this.memory = memory;
return this;
}
public Builder storage(String storage) {
this.storage = storage;
return this;
}
public Builder screen(String screen) {
this.screen = screen;
return this;
}
public Builder operatingSystem(String operatingSystem) {
this.operatingSystem = operatingSystem;
return this;
}
public Computer build() {
return new Computer(this);
}
}
}
// 使用建造者模式构建对象
public class BuilderPatternDemo {
public static void main(String[] args) {
Computer computer = new Computer.Builder()
.CPU("Intel Core i7")
.memory("16GB RAM")
.storage("512GB SSD")
.screen("15 inch 4K")
.operatingSystem("Windows 10")
.build();
// 使用computer对象
}
}
主要符合的设计原则:
- 单一职责原则(Single Responsibility Principle):
- 开闭原则(Open-Closed Principle):
- 里氏替换原则(Liskov Substitution Principle):
- 接口隔离原则(Interface Segregation Principle):
- 依赖倒转原则(Dependency Inversion Principle):
综上所述,建造者模式通过上述原则的应用,提高了代码的模块化和灵活性,降低了各个类之间的耦合。
在JDK中的应用:
java.lang.StringBuilder
/java.lang.StringBuffer
:java.nio.ByteBuffer
:java.sql.PreparedStatement
:- Java Stream API:
在Spring中的应用:
- Spring Security的配置:
- RestTemplate Builder:
- Spring Boot的ApplicationBuilder:
- Spring Framework的UriComponentsBuilder:
在这些例子中,建造者模式允许通过一个简洁且易读的接口逐步构建复杂对象。它使得代码更加清晰,并且可以灵活地构建对象,而不必担心对象的构建过程中的细节。这种模式在需要构建配置复杂的对象时特别有用,如在配置安全性、创建REST客户端或构建复杂的URI时。
原文地址:https://blog.csdn.net/haoxin963/article/details/134571083
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_6791.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。