建造者模式

建造者模式(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.

posted @   杨岂  阅读(91)  评论(0编辑  收藏  举报
编辑推荐:
· .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技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示