Java 设计模式 --- Builder模式 Java Builder 模式
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插件,使用 @Builder (lombok.Builder)注解,即可直接生成Builder模式方法。 无需人工创建。
Java 设计模式 --- Builder模式 Java Builder 模式相关推荐
- Java设计模式(16)中介模式(Mediator模式)
Mediator定义:用一个中介对象来封装一系列关于对象交互行为. 为何使用Mediator模式/中介模式 各个对象之间的交互操作非常多,每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉 ...
- Java设计模式(1)工厂模式(Factory模式)
工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因 ...
- Java设计模式(8)组合模式(Composite模式)
Composite定义:将对象以树形结构组织起来,以达成"部分-整体" 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. Composite比较容易理解,想到Compo ...
- Java设计模式(10)代理模式(Proxy模式)
理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...
- Java设计模式之五大创建型模式
Java设计模式之五大创建型模式 设计模式(23种) 单例模式(Singleton Pattern) 参考链接 概念 使用场景 实现思路 实现方式 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线 ...
- Java 设计模式之静态工厂方法模式
设计模式系列 创建型设计模式 Java 设计模式之单例模式 Java 设计模式之静态工厂方法模式 Java 设计模式之工厂方法模式 Java 设计模式之抽象工厂模式 Java 设计模式之Builder ...
- 【Java设计模式】简单学外观模式——万能遥控器
目录 说明 目标 实现方式 注意事项 其他链接 说明 结构型模式之一,其他还有适配器模式.桥接模式.组合模式.装饰模式.享元模式.代理模式 外观模式(Facade Pattern)通过定义一个一致的接 ...
- 【Java设计模式】简单学桥接模式——来杯大杯加奶不加糖咖啡
目录 说明 目标 实现方式 应用场景 其他链接 说明 结构型模式之一,其他还有适配器模式.装饰模式.组合模式.外观模式.享元模式.代理模式 目标 用抽象关联取代了多层继承,将类之间的静态继承关系转换为 ...
- 【Java设计模式】简单学访问者模式——我的选择是,Yes
目录 说明 实现方式 优点 缺点 应用场景 其他链接 说明 行为型模式之一,其他还有命令模式.模板方法模式.迭代器模式.观察者模式.中介者模式.备忘录模式.解释器模式(Interpreter模式).状 ...
- JAVA设计模式之3种工厂模式
转自 JAVA设计模式之3种工厂模式 创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离.为了使软件的结构更加清晰,外 ...
最新文章
- h265player开发
- 245热图展示微生物组的物种和功能丰度或有无、距离矩阵
- 解决Incorrect integer value: ‘‘ for column问题
- 数据结构之数组定义及基本操作(转)
- Linux多任务编程——进程
- 手机安装(Fiddler)证书
- ITK:运算后的当前图像
- Fiori应用的书签模式 - bookmark
- java8 javafx_Java 8的新增功能(第1部分– JavaFX)
- 大厂必问的分布式究竟是什么鬼?
- 企业实战_16_MyCat全局自增ID
- 电动汽车又“火了” 面对频繁自燃事故 蔚来不得不这样做...
- 一个经典约瑟夫问题的分析与解答
- P2424 约数和 真丶除法分块
- Windows 10 运行python弹出windows应用商店
- 不敢相信,技术栈,居然被P站秒了
- 福利来了 | 开发者社区布道师计划,奖品丰厚
- 关于input在苹果和安卓手机上调用相机和相册的问题
- citrix VPX 中申请证书的重点
- iec104协议java_GitHub - wsan70/IEC104_microgrid: iec104协议主站客户端程序,属于微电网管理系统一部分...
热门文章
- 基于三菱PLC的全自动洗衣机控制系统设计
- 诺基亚PC套件界面设计
- linux comd skill
- C语言实验报告册中级进步,C语言实验报告册
- xmpp java_XMPP: Android基于Xmpp的即时通讯
- oracle数据库可视化工具
- 准银河字母、当铺密码、摩斯电码详解
- 交叉验证和超参数调整:如何优化你的机器学习模型
- USB协议详解第1讲(核心概念通俗理解)
- 中兴e8820刷openwrt_中兴E8820V2(电信天翼宽带类似新路由3歌华链)-拆机及OpenWrt固件...