Builder 模式
来源:互联网 发布:团队协同软件 编辑:程序博客网 时间:2024/05/29 17:35
问题
当我们拥有一个类,它有几个必需成员变量和几个可选成员变量,如何构建这个类的实例,才能保证构建过程可读和安全?
现有方法的痛处
重叠构造器:
- 必须提供大量的构造器,不然会出现填写本不想设置的参数的情况
- 从方法的调用很难看出每个参数的含义
JavaBeans 模式的 setter 方法:
整个构造过程被划分到多个调用之中,因此- 无法通过仅仅观察构造器参数了解类的成员
- 需要做额外的工作保证其线程安全
Builder 模式
假设 Player 类的必需成员为 height, weight,可选成员为 strength, speed, skill,则该类的 Builder 模式如下:
// Builder Patternpublic class Player { private final double height; private final double weight; private final double strength; private final double speed; private final double skill; public static class Builder { // Required parameters private final double height; private final double weight; // Optional parameters - initialized to default values private double strength = 0; private double speed = 0; private double skill = 0; public Builder(double height, double weight) { this.height = height; this.weight = weight; } public Builder strength(double val) { strength = val; return this; } public Builder speed(double val) { speed = val; return this; } public Builder skill(double val) { skill = val; return this; } public Player build() { return new Player(this); } } private Player(Builder builder) { height = builder.height; weight = builder.weight; strength = builder.strength; speed = builder.speed; skill = builder.skill; }}
调用如下:
Player player = new Player.Builder(198, 120) .speed(80) .skill(95) .build();
阅读全文
0 0
- builder 模式
- Builder模式
- Builder 模式
- Builder模式
- builder模式
- builder模式
- Builder模式
- builder模式
- Builder模式
- Builder 模式
- Builder 模式
- Builder模式
- Builder模式
- builder模式
- builder模式
- builder模式
- Builder模式
- Builder模式
- java 将某个文件夹里的文件 全部 过滤后打印出来
- 树莓派通过ch340串口实现与电脑端通信
- 正则
- C++实现顺序表与链表
- 机器学习中的范数规则化之L0、L1与L2范数
- Builder 模式
- 运维小结之telnet服务配置
- 编程之路
- Lintcode159 Find Minimum in Rotated Sorted Array solution 题解
- 异常、堆内存溢出、OOM的几种情况
- Rabbitmq的使用及Web监控工具使用
- 使用七牛接口实现图片和文件一键上传
- 进程同步之信号量
- jmeter 函数及属性的获取方法