Builder模式在java中是使用非常频繁的一种设计模式,依赖静态内部类的形式存在于实体对象中,该内部类用于生成所在实体对象。

如下是一个学生实体类

public class Student {private String name;private int age;private char sex;public Student(String name, int age, char sex) {this.name = name;this.age = age;this.sex = sex;}/*** 静态内部类,用于生成一个Student对象*/private static class Builder{private Student target;public Builder() {this.target = new Student();}public Builder name(String name){target.name = name;return this;}public Builder age(int age){target.age = age;return this;}public Builder sex(char sex){target.sex = sex;return this;}public Student build(){return target;}}
}

通常采用

Student s1 = new Student("小明", 18, '男');

的方式例化Student对象,优点是简单,但是同时也带来先天的劣势,当参数过多,代码变长,鬼知道每个参数代表的什么意思,并且此种方式参数的顺序是固定的。

于是乎,Builder模式孕育而生,它解决了传统实例化对象带来的开发、维护中可读性不强的问题。那么它是如何实例化对象的呢?

Student s2 = new Student.Builder().age(18).name("八戒").sex('男').build();
 

设计模式之Builder模式相关推荐

  1. Android设计模式之——Builder模式

    一.介绍 Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细的控制对象的构造流程.该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程 ...

  2. Java设计模式之Builder模式

    Java设计模式之Builder模式 Java设计模式之Builder模式 简介 适用性 用LOL的出装备的顺序为例 基本实现代码 BasePerson的实现 DeMaXiYa的实现 QiTianDa ...

  3. 「设计模式(六) - Builder模式」

    「设计模式(六) - Builder模式」 一.可定制化的 电脑的组装在生活中并不陌生,大家都有电脑,当然需求不一样配置也不一样.以Macbook Pro为例,像UI设计对图像模块GPU要求比较高,跑 ...

  4. Android常用设计模式之Builder模式理解

    Android常用设计模式之Builder模式 1 单例模式 2 Builder模式 Builder模式的应用场景 总结 1 单例模式 单例模式之前有详细的介绍,可移步到链接: 常见的单例模式及其特点 ...

  5. Java 设计模式之Builder模式

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

  6. Android常考问题(8)-设计模式:Builder模式(顺带学习了一下String的比较和final)

    今天的主要目的是学习设计模式中的Builder模式.由于java基础不牢固,在学习过程中要回过头去学习java内容,因此凑成了这样一篇驳杂的文章. Builder模式 首先是Builder设计模式的作 ...

  7. 【设计模式】Builder模式

    一.前言 设计模式系列(参考资料:<Android源码设计模式解析与实战>--何红辉.关爱明) 单例模式 Builder模式 原型模式 二.介绍 我们开发中偶尔会遇到一些需要设置10个或以 ...

  8. 码农小汪-设计模式之-Builder模式

    建造者模式 将一个复杂的对象的构建与它的表示分离,使得同样构建的过程中可以创建不同的表示.这个话语看起来,好累啊!真心很难理解. 下面是它的UML图: 抽象建造者角色(Builder):为创建一个Pr ...

  9. java设计模式:Builder模式

    Builder模式关键是在建立对象是一步一步处理 package customer;class Starbucks {private String size;private String drink; ...

  10. 设计模式--建造者(Builder)模式

    模式定义 将一个复杂对象的创建与他的表示分离,使得同样的构建过程可以创建不同的表示 类图 应用场景 1.需要生成的对象具有复杂的内部结构: 2.需要生成的对象内部属性本身相互依赖: 3.与不可变对象配 ...

最新文章

  1. Nodejs开发简单的脚手架工具
  2. Keras【Deep Learning With Python】手写数字识别
  3. WebRTC学习笔记
  4. mysql 秀出两个相关联的表中满足条件的内容_这六个 MySQL 死锁案例,能让你理解死锁的原因!...
  5. c语言在函数中只执行一次,请问大家,为什么我调用我定义的函数俩次,但是程序只执行一次...
  6. python读取xlsx文件pandas_用Python的pandas框架操作Excel文件中的数据教程
  7. Android studio安装及常见问题
  8. 武汉三首,记录备忘,写的不好,以后再改
  9. idea findbugs使用_IDEA如何协同开发统一代码风格?编码不规范如何解决?
  10. window ngnix php配置文件,Window下PHP和Nginx的配置
  11. 矩阵论作业4,5,6讲
  12. MyBatis 拦截器执行顺序
  13. python可以用于工业机器人编程与操作_如何实现工业机器人编程抓取
  14. 免费开源网站系统html,全CMS开源系统
  15. 第一阶段✦第一章☞信息化知识
  16. 大数据方面核心技术有哪些?
  17. Cocos Creator 开发微信小游戏 打包上线
  18. 基于Websocket协议的即时通讯系统设计与实现
  19. 金格控件java版本_金格控件宝典(问题大全.docx
  20. 2月14日机构龙虎榜和知名游资操作情况

热门文章

  1. 非常好的油画制作软件ArtRage.v2.11
  2. Java——猜数字游戏
  3. SqlSugar-执行Sql语句查询实例
  4. 北航论文模板:解决XeLaTeX中Font shape'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' instead
  5. ispostback之坑
  6. 使用Word 2003“格式→外文版式→带圈字符”功能可以输入10以上带圈序号。
  7. JTAG各类接口针脚定义、含义以及SWD接线方式
  8. BAM MATLAB,最新DEA模型:RAM模型、BAM模型、加权SBM模型、SBM方向性距离模型计算...
  9. 基于SpringBoot的个人博客系统【完整项目源码】
  10. 刘铎 计算机学院,离散数学及应用 [刘铎 编著] 2013年版