代码:
package com.zhaoyou.tars.common; /** * @author: Mr_Q * @create: 2019-03-12 11:40 * @program: basic-client-test * @description: **/ public class HeaderReqVo { /*** * * "version": // 版本号 * "traceId"://贯穿始终的ID, 调用方传 * "timestamp": //自己的当前时间 * "id": 自己的服务ID * "method":com.zhaoyou.osd.service.osp.xxx //自己方法名 * "ip"://自己的IP * * */ private final String version; private final String traceId; private final String timestamp; private final String id; private final String method; private final String ip; public static HeaderInner create(){ return new HeaderInner(); } public static final class HeaderInner { private String version; private String traceId; private String timestamp; private String id; private String method; private String ip; public HeaderInner setVersion(String version) { this.version = version; return this; } public HeaderInner setTraceId(String traceId) { this.traceId = traceId; return this; } public HeaderInner setTimestamp(String timestamp) { this.timestamp = timestamp; return this; } public HeaderInner setId(String id) { this.id = id; return this; } public HeaderInner setMethod(String method) { this.method = method; return this; } public HeaderInner setIp(String ip) { this.ip = ip; return this; } public HeaderReqVo build() { return new HeaderReqVo(this); } } private HeaderReqVo(HeaderInner builder) { this.version = builder.version; this.traceId = builder.traceId; this.timestamp = builder.timestamp; this.id = builder.id; this.method = builder.method; this.ip = builder.ip; } @Override public String toString() { return "HeaderReqVo{" + "version='" + version + '\'' + ", traceId='" + traceId + '\'' + ", timestamp='" + timestamp + '\'' + ", id='" + id + '\'' + ", method='" + method + '\'' + ", ip='" + ip + '\'' + '}'; } }
测试:
public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(()->{ HeaderReqVo getUserInfo = HeaderReqVo.create().setVersion("1.0").setTraceId("user.server").setTimestamp(String.valueOf(System.currentTimeMillis())).setId("111").setMethod("getUserInfo").setIp("127.0.0.1").build(); System.out.println(getUserInfo); }); executorService.execute(()->{ HeaderReqVo getUserInfo = HeaderReqVo.create().setVersion("2.0").setTraceId("user.server2").setTimestamp(String.valueOf(System.currentTimeMillis())).setId("222").setMethod("getUserInfo2").setIp("127.0.0.2").build(); System.out.println(getUserInfo); }); }
结果
优点:
(1) 继承建造者的优点,解耦
(2) 使用链式编程,可读性好
注意点:标红部分为注意点,不然会出现多线程问题
相关推荐
java设计模式【之】建造者模式【源码】【场景:车辆组装】 将复杂的对象构建,与对象的使用进行分离 用户只需要通过简单流程即可创建出对象 方法调用顺序,步骤的不同实现 优点:封装性号,创建和使用分离,扩展性...
建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入...
11.4 建造者模式的扩展 11.5 最佳实践 第12章 代理模式 12.1 我是游戏至尊 12.2 代理模式的定义 12.3 代理模式的应用 12.3.1 代理模式的优点 12.3.2 代理模式的应用 12.4 代理模式的扩展 12.4.1 普通代理 12.4.2 ...
建造者模式 170 原型模式 177 适配器模式 182 桥接模式 188 过滤器模式 192 组合模式 193 装饰器模式★★★★★ 196 外观模式 201 享元模式 204 代理模式★★★★★ 208 责任链模式 212 命令模式 216 解释器模式 219...
+---builder--------------------------------建造者模式 +---guardedSuspension----------------------保护性暂挂模式 +---immutable------------------------------不可变模式 +---introduction1-----------------...
pattern/src/creation/singleton //11.3单例模式 pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/...
3.4BuilderPattern(建造者模式) 58 3.4.1定义 58 3.4.2现实例子——快餐店 60 3.4.3C#实例——车间造车 61 3.4.4Java实例——建造房屋 65 3.4.5优势和缺陷 69 3.4.6应用情景 70 3.5PrototypePattern(原型...
3.4BuilderPattern(建造者模式) 58 3.4.1定义 58 3.4.2现实例子——快餐店 60 3.4.3C#实例——车间造车 61 3.4.4Java实例——建造房屋 65 3.4.5优势和缺陷 69 3.4.6应用情景 70 3.5PrototypePattern(原型...
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...
pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/structure/decorator //12.2装饰器模式 pattern/...
访问者模式 设计案例 UML 架构 系统架构能力 基本理论 扩展性设计 可用性设计 可靠性设计 一致性设计 负载均衡设计 过载保护设计 协议设计 二进制协议 文本协议 接入层架构设计 DNS轮询 动静态...
pattern/src/creation/singleton //11.3单例模式 pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/...
pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/structure/decorator //12.2装饰器模式 pattern/...
pattern/src/creation/singleton //11.3单例模式 pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/...
pattern/src/creation/singleton //11.3单例模式 pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/...
pattern/src/creation/singleton //11.3单例模式 pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/...
pattern/src/creation/singleton //11.3单例模式 pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/...
pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/structure/decorator //12.2装饰器模式 pattern/...