1.

@Data
public class Student {
//体检用
private String name;
private int age;
private int height;
private int sex;
//录取用
private String schoolName;
private String profession;
private int gradeNo;
//分班用
private String idCard;
private String stuNo;
private String labName;
private String dormitoryAddress; private Student(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.height = builder.height;
this.sex = builder.sex;
this.schoolName = builder.schoolName;
this.profession = builder.profession;
this.gradeNo = builder.gradeNo;
this.idCard = builder.idCard;
this.stuNo = builder.stuNo;
this.labName = builder.labName;
this.dormitoryAddress = builder.dormitoryAddress;
} public static class Builder{
//体检用 公用的用final
private final String name;
private final int age;
private final int height;
private final int sex; //录取用
private String schoolName;
private String profession;
private int gradeNo; //分班用
private String idCard;
private String stuNo;
private String labName;
private String dormitoryAddress; public Builder(String name, int age, int height, int sex) {
this.name = name;
this.age = age;
this.height = height;
this.sex = sex ;
} public Builder schoolName(String schoolName) {
this.schoolName = schoolName;
return this;
} public Builder profession(String profession) {
this.profession = profession;
return this;
} public Builder gradeNo(int gradeNo) {
this.gradeNo = gradeNo;
return this;
} public Builder idCard (String idCard) {
this.idCard = idCard;
return this;
}
public Builder stuNo(String stuNo) {
this.stuNo = stuNo;
return this;
}
public Builder labName(String labName) {
this.labName = labName;
return this;
} public Builder dormitoryAddress(String dormitoryAddress) {
this.dormitoryAddress = dormitoryAddress;
return this;
} public Student build() {
return new Student(this);
}
} //测试
public static void main(String[] args) {
//各取所需,公用的字段写成Builder的构造方法中!
Student zhangsan = new Student.Builder("zhangsan", 28, 168, 0).build(); //体检的张三只要四个基本参数 Student zhangsan1 = new Builder("zhangsan", 28, 168, 0).schoolName("安徽大学").profession("国贸").build(); // 录取学生信息管理系统要的字段 Student zhangsan2 = new Student.Builder("zhangsan", 28, 168, 0).schoolName("安徽大学").profession("国贸").stuNo("学号04012057")
.gradeNo(302).dormitoryAddress("寝室号502").build(); System.out.println("张三的体检信息:" + zhangsan);
System.out.println("张三被录取后信息:" + zhangsan1);
System.out.println("张三分班后:" + zhangsan2); }
}

2. 结果

张三的体检信息:Student(name=zhangsan, age=28, height=168, sex=0, schoolName=null, profession=null, gradeNo=0, idCard=null, stuNo=null, labName=null, dormitoryAddress=null)
张三被录取后信息:Student(name=zhangsan, age=28, height=168, sex=0, schoolName=安徽大学, profession=国贸, gradeNo=0, idCard=null, stuNo=null, labName=null, dormitoryAddress=null)
张三分班后:Student(name=zhangsan, age=28, height=168, sex=0, schoolName=安徽大学, profession=国贸, gradeNo=302, idCard=null, stuNo=学号04012057, labName=null, dormitoryAddress=寝室号502)

第二条 一个类如果有多个参数,考虑用Builder构造者模式的更多相关文章

  1. Effective Objective-C 2.0 — 第二条:类的头文件中尽量少引入其他头文件

    第二条:类的头文件中尽量少引入其他头文件 使用向前声明(forward declaring) @class EOCEmployer 1, 将引入头文件的实际尽量延后,只在确有需要时才引入,这样就可以减 ...

  2. 【问题】多重继承时,super函数只初始化继承的第一个类,不初始化第二个类。

    class A(object): def __init__(self): print("init class A") class B(object): def __init__(s ...

  3. c++ 中一个类或者一个对象所占的字节数

    转载博客:转载地址https://www.cnblogs.com/JingHuanXiao/p/6080726.html 一个空的class在内存中多少字节?如果加入一个成员函数后是多大?这个成员函数 ...

  4. C++中一个类(非继承类)对象,所占内存空间大小

    离职后在家里带了半年多了,这半年多里没有编写过一行代码,倒是看过一些书,但是差不多也都是囫圃吞枣.房子也快要装修,也得赶快找一个工作了,不然养车,还要玩摄影,没收入的日子真是不好过啊.呵呵. 按惯例, ...

  5. [转]自己写PHP扩展之创建一个类

    原文:http://www.imsiren.com/archives/572 比如我们要创建一个类..PHP代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  6. 在SQL SERVER中获取表中的第二条数据

    在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...

  7. 【PHP面向对象(OOP)编程入门教程】4.如何抽象出一个类?

    上面已经介绍过了, 面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类, 做出来一个类很容易,只要掌握基本的程序语法定义规则就可以做的出来,那么难点在那里呢 ...

  8. java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。

    首先先说一下类的加载,流程.只有明确了类这个对象的存在才可以更好的理解反射的原因,以及反射的机制. 一.  类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三 ...

  9. 一个类搞定UIScrollView那些事

    前言 UIScrollView可以说是我们在日常编程中使用频率最多.扩展性最好的一个类,根据不同的需求和设计,我们都能玩出花来,当然有一些需求是大部分应用通用的,今天就聊一下以下需求,在一个categ ...

随机推荐

  1. 【BZOJ】2820: YY的GCD(莫比乌斯)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2820 此题非常神! 下文中均默认n<m 首先根据bzoj1101的推理,我们易得对于一个数d使 ...

  2. HDU 4618 Palindrome Sub-Array(DP)

    题目链接 我还是图样啊....比赛的时候没敢暴力去搜... #include <cstdio> #include <cstdlib> #include <cstring& ...

  3. HTML&CSS----练习(运算符)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. java类的继承

    继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(重写)的方式,产生一个新的类型.继承是面向对 象的三个基本特征--封装.继承.多态的其中之一,我们在使用java时编写的每一个类都是 ...

  5. svchost.exe是什么?为什么一直在运行

    原文:http://www.howtogeek.com/howto/windows-vista/what-is-svchostexe-and-why-is-it-running/ 自己简单翻译了下,图 ...

  6. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式

    方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时 ...

  7. IOS开发之开篇--CocoaPods安装

    CocoaPods是什么?当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其 ...

  8. 西秦的ACE-Python教程 一、Python本地开发环境部署

    西秦的ACE-Python教程 一.Python本地开发环境部署       西秦 级别: 论坛版主 发帖 1357 云币 2782 加关注 写私信   只看楼主 更多操作楼主  发表于: 10-10 ...

  9. 关于APP接口设计

    最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 1.效率:接口访问速度 APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所 ...

  10. Direct基础学习系列3 绘制+实例

    3.1.1顶点缓存 索引缓存 放置在显存中能够加快绘制速度 创建顶点缓存 HRESULT CreateVertexBuffer( UINT Length, //为缓存分配的字节数 DWORD Usag ...