建造者模式
建造者模式(Builder Pattern)属于创建型模式,它提供了一种创建对象的最佳方式。
它将一个复杂的对象的构建分成多个简单的步骤。
当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用建造者模式
建造者实现步骤:
1、在Setting 中创建一个静态内部类 Builder(私有化构造),然后将 Setting中的属性都复制到Builder类中
2、在Setting 中创建一个 builder()方法,用于实例化Builder
3、在Setting 中创建一个private的构造函数,参数为Builder类型,将Builder内的属性赋值给Setting内的属性
4、Builder中创建设置函数,对Setting中那些可选参数进行赋值,返回值为Builder类型的实例
5、在Builder中创建一个builder()方法,在其中构建Setting的实例并返回
代码:
public class Settings { private final int maxSize; private final int minSize; private final int maxWaitQueueSize; private final long maxWaitTimeMS; /** * 返回建造器的实例 */ public static Builder builder() { return new Builder(); } /** * 私有化构造,参数为Builder,用于创建Setting实例并初始化属性 */ private Settings(final Builder builder) { maxSize = builder.maxSize; minSize = builder.minSize; maxWaitQueueSize = builder.maxWaitQueueSize; maxWaitTimeMS = builder.maxWaitTimeMS; } /** * 建造器 */ public static final class Builder { private int maxSize; private int minSize; private int maxWaitQueueSize; private long maxWaitTimeMS; private Builder() { } public Builder maxSize(final int maxSize) { this.maxSize = maxSize; return this; } public Builder minSize(final int minSize) { this.minSize = minSize; return this; } public Builder maxWaitQueueSize(final int maxWaitQueueSize) { this.maxWaitQueueSize = maxWaitQueueSize; return this; } public Builder maxWaitTimeMS(final long maxWaitTimeMS) { this.maxWaitTimeMS = maxWaitTimeMS; return this; } public Settings build() { return new Settings(this); } } /** * Setting 的getter方法 */ public int getMaxSize() { return maxSize; } public int getMinSize() { return minSize; } public int getMaxWaitQueueSize() { return maxWaitQueueSize; } public long getMaxWaitTimeMS() { return maxWaitTimeMS; } }
使用建造器创建Setting实例:
Settings settings = Settings.builder() .minSize(1) .maxSize(2) .maxWaitQueueSize(5) .maxWaitTimeMS(1000L) .build();
END.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类