创建型 建造者模式

简介: 设计模式

建造者模式的使用场景:

  1. 当被创建的对象内部成员之间相互依赖时,不能单纯的直接new出来;
  2. 当初始化参数比较多时,直接new出来,构造方法内的参数过多,代码不够简洁,容易出错;
  3. 直接new出来对象,再采用set方法为成员赋值时,可能会产生在所有需要set的属性被设置前,该对象处于无效状态,而有时候我们的需求是对象创建出来即生效;
    1. 如果需要一次性创建相互有依赖关系的多个对象时,就应该使用建造者模式。

工厂模式跟建造者模式的区别:
工厂方法是创建同一种类针对的很多,而 Builder 模式创建的是一个对象,只针对一个。他们两个侧重面不同。
工厂模式是用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。建造者模式是用来创建一种类型的复杂对象,通过设置不同的可选参数,“定制化”地创建不同的对象。
网上有一个经典的例子很好地解释了两者的区别。顾客走进一家餐馆点餐,我们利用工厂模式,根据用户不同的选择,来制作不同的食物,比如披萨、汉堡、沙拉。对于披萨来说,用户又有各种配料可以定制,比如奶酪、西红柿、起司,我们通过建造者模式根据用户选择的不同配料来制作披萨。

/**

  • 建造者模式
    */
    public class ThreadPoolConfig {
    private String name;
    private int coreThreadNum;
    private int maxThreadNum;
    private long keepAlive;

    private ThreadPoolConfig(Builder builder){

     this.name = builder.name;
     this.coreThreadNum = builder.coreThreadNum;
     this.maxThreadNum = builder.maxThreadNum;
     this.keepAlive = builder.keepAlive;
    

    }

    public static class Builder{

     private String name;
     private int coreThreadNum;
     private int maxThreadNum;
     private long keepAlive;
    
     public Builder setName(String name){
         this.name = name;
         return this;
     }
    
     public Builder setCoreThreadNum(int coreNum){
         this.coreThreadNum = coreNum;
         return this;
     }
    
     public Builder setMaxThreadNum(int maxNum){
         this.maxThreadNum = maxNum;
         return this;
     }
    
     public Builder setAlive(Long keepAlive){
         this.keepAlive = keepAlive;
         return this;
     }
    
     public ThreadPoolConfig build(){
         if(TextUtils.isEmpty(name)){
             throw new IllegalArgumentException("name not empty");
         }
         if(coreThreadNum < 0){
             throw new IllegalArgumentException("num not below 0");
         }
         return new ThreadPoolConfig(this);
     }
    

    }

}

相关文章
冰洲石材料与光学特性
冰洲石(天然方解石)是双折射率最高(Δn=0.172)的光学晶体,可高效分离并输出振动垂直的线偏振光,消光比达1×10⁻⁵,是格兰棱镜等高端偏振元件不可替代的核心材料。
|
3月前
|
XML JSON 数据格式
创建型 工厂模式
工厂模式包含三种变体:简单工厂(集中创建,适合逻辑简单场景)、工厂方法(抽象工厂接口+多实现类,符合开闭原则,应对复杂创建逻辑)和抽象工厂(统一创建多个关联对象,适用于产品族场景)。三者均用于封装对象创建过程,提升复用性与可维护性。(239字)
117 1
|
3月前
|
设计模式 BI
创建型 原型模式
原型模式通过复制现有对象(原型)创建新实例,适用于创建成本高、差异小的场景。分浅拷贝(仅复制基本类型和引用地址,共享对象)与深拷贝(完全独立副本,递归或序列化实现),二者核心区别在于堆内存中是否生成新对象。(239字)
121 0
|
3月前
|
人工智能 缓存 运维
AI 网关 FinOps 最佳实践:如何为不同消费者控制 AI 调用预算
本文面向 AI 网关使用者,帮助您建立一套完善的消费者 AI FinOps 治理体系。
371 24
|
3月前
|
人工智能 自然语言处理 测试技术
从 LLM 评测到 AI Agent 评测,我的一些思考!
本文深入剖析AI评测体系的演进与陷阱,指出当前主流评测方法在Agent场景下的根本性失效:静态数据集、单次测试、只看输出等范式无法应对Agent的动态性、不确定性与系统性。文章提出四大关键转变——从“说了什么”到“做了什么”、从数据集到交互环境、从单点分数到概率分布、从评模型到评完整系统,并倡导构建多维、场景化、闭环的科学评测体系
359 1
从 LLM 评测到 AI Agent 评测,我的一些思考!
|
2月前
|
人工智能 自然语言处理 安全
阿里云千问办公活动:一站式AI生产力平台,限时限量积分加倍
千问办公是阿里巴巴全新推出的一站式 AI 办公平台,不止于对话,更注重交付——用户仅需一句话,即可完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务,直接获得可用成果。目前已全面覆盖桌面端、网页端,并深度接入钉钉生态,依托个人云盘、IM、连接器等模块打通数据与设备,让 AI 真正融入工作流,随时随地响应办公需求。
|
3月前
|
人工智能 算法 机器人
10个行业AI搜索获客实战:从本地餐饮到工业制造的GEO策略
AI搜索正取代传统SEO,用户从“点击链接”转向“直接要答案”。本文基于餐饮、装修、法律等10大行业实战,揭示GEO(生成式引擎优化)本质:不求被搜到,而要成为AI主动推荐的“唯一答案”。通过认知重塑、策略原点、行业剖解与系统飞轮四步,助企业预制结构化“答案单元”,抢占AI时代获客先机。
280 2
|
3月前
|
人工智能 自然语言处理 搜索推荐
企业如何用好智能客服系统?2026年真实案例拆解
智能客服的成败,三分靠选型,七分靠运营。2026年,超92%的企业已部署AI客服,但仅35%真正跑出了效能——差距不在"有没有",而在"会不会用"。本文拆解星巴克、长城汽车、东风猛士等企业的真实落地路径,提炼出一套"选对平台→分阶段落地→持续运营"的三步闭环方法论。
|
3月前
|
人工智能 数据挖掘 数据安全/隐私保护
不会写提示词?用 4 个要素把 AI 用进日常办公
以会议纪要、周报和邮件为例,介绍用“对象、材料、要求、输出格式”四个要素编写办公提示词,并提供可复用模板与数据安全核对清单。
|
3月前
|
存储 人工智能 自然语言处理
AI大模型工具深度运用实践:AI如何帮助企业获客?AI营销流程与智能体自动化应用案例解析
本文深度解析AI大模型与智能体在企业获客中的实战应用,涵盖AI内容营销、用户精准分析、销售助手提效、自动化营销流程及智能客服系统构建,揭示AI如何降本增效、赋能营销全链路,助力企业迈向智能化运营新阶段。(239字)
351 1

热门文章

最新文章