Java 设计模式 --- Builder模式 Java Builder 模式

一、Builder模式

1、builder模式也叫建造者模式,builder模式的作用将一个复杂对象的构建与他的表示分离,使用者可以一步一步的构建一个比较复杂的对象。

2、有一个User类如下:

public class User {private String id ;private String name ;private Integer age ;// ignore getter/setter }

二、Builder模式实现步骤

1、User类中创建一个静态内部类 Builder

2、Builder 类中,包含User类的全部属性

3、Builder 类中,每个属性创建赋值方法,并返回当前对象 ,如:

public Builder id(String id) {this.id = id ;return this;}

4、Builder 类中,创建 build方法,返回User对象并赋值

   public User build() {return new User(this.id , this.name , this.age);}

4.1、Builder 类中,创建 build方法,返回builder实例,在User对象中赋值。(二选一,都可以)

5、User类中,创建静态builder方法,返回Builder对象

 public static Builder builder(){return new Builder();}

6、完整代码如下:


/*** description: Java Builder模式练习* @version v1.0* @author w* @date 2021年7月7日上午11:37:49**/
public class User {private String id ;private String name ;private Integer age ;public static Builder builder(){return new Builder();}public static class Builder{private String id ;private String name ;private Integer age ;public Builder id(String id) {this.id = id ;return this;}public Builder name(String name) {this.name = name ;return this ;}public Builder age(Integer age) {this.age = age ; return this;}public User build() {return new User(this);}public User build2() {return new User(this.id , this.name , this.age);}}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public User() {super();}public User(String id, String name, Integer age) {super();this.id = id;this.name = name;this.age = age;}public User(Builder builder) {this.id = builder.id;this.name = builder.name ;this.age = builder.age;}}

        7、如何使用:

public static void main(String[] args) {User user = User.builder().id("11").name("小明").age(17).build();System.out.println(user);}

三、总结

1、Builder 模式创建步骤:

  • 在类中,创建一个静态内部类,包含外部类的全部属性;
  • 在内部类中,为每一个属性进行赋值;
  • 内部类中创建 build 方法,返回外部类对象
  • 在外部类中创建静态 builder方法,返回内部类对象

2、Builder 模式调用步骤:

  • 外部类调用静态builder方法创建内部类对象
  • 内部对象.属性名 方法,进行赋值
  • 调用 build 方法,完成外部类对象创建,并初始化赋值

3、有没有简单快速办法呢,有! 使用 lombok插件,使用 @Builderlombok.Builder)注解,即可直接生成Builder模式方法。 无需人工创建。

Java 设计模式 --- Builder模式 Java Builder 模式相关推荐

  1. Java设计模式(16)中介模式(Mediator模式)

    Mediator定义:用一个中介对象来封装一系列关于对象交互行为. 为何使用Mediator模式/中介模式 各个对象之间的交互操作非常多,每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉 ...

  2. Java设计模式(1)工厂模式(Factory模式)

    工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因 ...

  3. Java设计模式(8)组合模式(Composite模式)

    Composite定义:将对象以树形结构组织起来,以达成"部分-整体" 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. Composite比较容易理解,想到Compo ...

  4. Java设计模式(10)代理模式(Proxy模式)

    理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...

  5. Java设计模式之五大创建型模式

    Java设计模式之五大创建型模式 设计模式(23种) 单例模式(Singleton Pattern) 参考链接 概念 使用场景 实现思路 实现方式 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线 ...

  6. Java 设计模式之静态工厂方法模式

    设计模式系列 创建型设计模式 Java 设计模式之单例模式 Java 设计模式之静态工厂方法模式 Java 设计模式之工厂方法模式 Java 设计模式之抽象工厂模式 Java 设计模式之Builder ...

  7. 【Java设计模式】简单学外观模式——万能遥控器

    目录 说明 目标 实现方式 注意事项 其他链接 说明 结构型模式之一,其他还有适配器模式.桥接模式.组合模式.装饰模式.享元模式.代理模式 外观模式(Facade Pattern)通过定义一个一致的接 ...

  8. 【Java设计模式】简单学桥接模式——来杯大杯加奶不加糖咖啡

    目录 说明 目标 实现方式 应用场景 其他链接 说明 结构型模式之一,其他还有适配器模式.装饰模式.组合模式.外观模式.享元模式.代理模式 目标 用抽象关联取代了多层继承,将类之间的静态继承关系转换为 ...

  9. 【Java设计模式】简单学访问者模式——我的选择是,Yes

    目录 说明 实现方式 优点 缺点 应用场景 其他链接 说明 行为型模式之一,其他还有命令模式.模板方法模式.迭代器模式.观察者模式.中介者模式.备忘录模式.解释器模式(Interpreter模式).状 ...

  10. JAVA设计模式之3种工厂模式

    转自 JAVA设计模式之3种工厂模式 创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离.为了使软件的结构更加清晰,外 ...

最新文章

  1. h265player开发
  2. 245热图展示微生物组的物种和功能丰度或有无、距离矩阵
  3. 解决Incorrect integer value: ‘‘ for column问题
  4. 数据结构之数组定义及基本操作(转)
  5. Linux多任务编程——进程
  6. 手机安装(Fiddler)证书
  7. ITK:运算后的当前图像
  8. Fiori应用的书签模式 - bookmark
  9. java8 javafx_Java 8的新增功能(第1部分– JavaFX)
  10. 大厂必问的分布式究竟是什么鬼?
  11. 企业实战_16_MyCat全局自增ID
  12. 电动汽车又“火了” 面对频繁自燃事故 蔚来不得不这样做...
  13. 一个经典约瑟夫问题的分析与解答
  14. P2424 约数和 真丶除法分块
  15. Windows 10 运行python弹出windows应用商店
  16. 不敢相信,技术栈,居然被P站秒了
  17. 福利来了 | 开发者社区布道师计划,奖品丰厚
  18. 关于input在苹果和安卓手机上调用相机和相册的问题
  19. citrix VPX 中申请证书的重点
  20. iec104协议java_GitHub - wsan70/IEC104_microgrid: iec104协议主站客户端程序,属于微电网管理系统一部分...

热门文章

  1. 基于三菱PLC的全自动洗衣机控制系统设计
  2. 诺基亚PC套件界面设计
  3. linux comd skill
  4. C语言实验报告册中级进步,C语言实验报告册
  5. xmpp java_XMPP: Android基于Xmpp的即时通讯
  6. oracle数据库可视化工具
  7. 准银河字母、当铺密码、摩斯电码详解
  8. 交叉验证和超参数调整:如何优化你的机器学习模型
  9. USB协议详解第1讲(核心概念通俗理解)
  10. 中兴e8820刷openwrt_中兴E8820V2(电信天翼宽带类似新路由3歌华链)-拆机及OpenWrt固件...