effective java--遇到多个构造器参数最好使用Builder模式
来源:互联网 发布:mac蓝屏之后开不了机了 编辑:程序博客网 时间:2024/05/25 16:41
上次说用静态工厂方法来代替构造器,好处有几点:
1、静态工厂方法有名称,你可以通过命名使其更有意义
2、使用静态工厂方法之后不必每次调用的时候都创建一个新的对象(静态工厂方法是static修饰的方法,其对象在程序第一次加载的时候就已经在内存中了,直到程序结束该内存才会释放)
3、静态工厂方法可以返回原返回类型的任何子类型的对象(这个还在研究中)
但是在遇到多个构造器参数,或者参数一开始无法确定的时候,无论用静态工厂方法或者构造器都是一件麻烦的事情,创造者必须要提供多个方法或者构造器,而且调用的时候还要小心看清每个参数。或者会选择用javabean模式(就是调用无参构造器,然后不断set值),但是这有个缺点:调用过程中javabean可能处于不一致的状态。
这时候你可以考虑Builder模式,它的参数可以再创建对象期间进行调整,也可随对象不同而改变,具体的列子可以看转自这位up主的代码
http://www.cnblogs.com/moonz-wu/archive/2011/01/11/1932473.html
不想去原博客看得可以看下面从他拿那到的例子:ps(在builder里给参数赋值的时候我发现我自己测试没有指明this的话会赋值失败,所以我自己加上了this,还有这里涉及成员内部类的知识,可以看这里http://android.blog.51cto.com/268543/384844/)
public class DoDoContact { private final int age; private final int safeID; private final String name; private final String address; public int getAge() { return age; } public int getSafeID() { return safeID; } public String getName() { return name; } public String getAddress() { return address; } public static class Builder { private int age = 0; private int safeID = 0; private String name = null; private String address = null;public Builder(String name) { this.name = name; } public Builder age(int val) { this.age = val; return this; } public Builder safeID(int val) { this.safeID = val; return this; } public Builder address(String val) { this.address = val; return this; } public DoDoContact build() { // 构建,返回一个新对象 return new DoDoContact(this); } } private DoDoContact(Builder b) { age = b.age; safeID = b.safeID; name = b.name; address = b.address; }}//调用的代码:DoDoContact ddc = new DoDoContact.Builder("Ace").age(10) .address("beijing").build();System.out.println("name=" + ddc.getName() + "age =" + ddc.getAge() + "address" + ddc.getAddress());
阅读全文
0 0
- effective java--遇到多个构造器参数最好使用Builder模式
- Effective Java -- 遇到多个构造器参数时要考虑用构建器(Builder)
- 多个构造参数考虑使用Builder构造器模式
- Effective Jave——第2条: 遇到多个构造器参数时考虑使用构建器(Builder)
- 2、遇到多个构造参数的时候需要考虑使用构建器(effective java)
- Builder模式--用于多个构造器参数时使用
- Effective Java记录2:遇到多个构造器考虑用构建器(Builder)
- java中使用Builder模式构建多个参数的构造器
- 遇到多个构造参数时考虑使用builder
- Effective java第二条:遇到多个构造器参数时要考虑用构造器
- Effective Java Item2:当构造方法的参数(尤其是可选参数)比较多时使用Builder模式
- Effective Java第二条:遇到多个构造器参数时要考虑用构建器
- Effective Java (2) - 遇到多个构造器参数时要考虑用构建器
- Effective Java 第二条:遇到多个构造器参数时要考虑用构建器
- Effective-Java学习笔记 遇到多个构造器参数时要考虑用构建器
- effective java(一)遇到多个构造器参数 时要考虑用构建器
- effective java(2) 之遇到多个构造器参数时要考虑用构建器
- Effective Java 2 -- 遇到多个构造器参数的时候考虑构建器
- Binary Tree Path Sum II
- Python文件处理——文件的读写和计数
- mysql异常 [Err] 1215
- Laravel-lumen 安装配置JWT
- css3——大小不固定的图片、多行文字的水平垂直居中
- effective java--遇到多个构造器参数最好使用Builder模式
- Android网络编程概述
- 11.03 P73 模拟+堆+贪心
- Java
- 数组方法
- Maven项目中redis(jedis)的配置和使用
- stringbuffer和string的相互转换
- debian9安装好后的初始化配置
- 各种进制转换常用方法