Effective java 代码优化实例1

package chape2;
/**
* effective_java 第二章 创建和销毁对象
* 书中实例练习
* 原则:
* 1.考虑用静态工厂方法来带特构造方法;-- 4-8
* 2.遇到多个构造方法的参数时要考虑用构建器 就是这个类有许多的变量 -- 9-13
*   当一个类有很多变量的时候,会用重叠构造方法(telescoping constructor) 就是构造方法中的参数递增
* 一个类中有很多的构造方法 参数的个数不同;解决这个问题的方法 首先是用javabean的方法 里面有很多的变量的
* seter和geter方法;这是我们常用的;但是有seter方法提供给外界 就导致了这类不能成为不可变类,这样就不能保证
* 传来的参数可能存在不一致性。解决这样的方法就是用builder模式 这个类就演示builder模式的例子
*   bulder的不足 要创建实例先创建构建器 这儿有点内存开销,在对效率要求很高的程序要考虑;还有就是代码多了;
*   所以当参数有四个或者四个以上的时候,而且大多数的参数时可选的时候。使用构建器;
* @author lee
* 2009-11-15
*/
public class Chape2_1 {

public static void main(String[] args) {
// 实例化类 这样的代码易于阅读
Nuter nu = new Nuter.Builder (200,2).fat(10).sodium(20).build();

}

}
class Nuter
{
private final int size;
private final int sering;
private final int fat;
private final int sodium;

public static class Builder
{
//这两个参数时必须的参数
private final int size;
private final int sering;
//下面是可选的参数 设置了默认值
private  int fat = 0;
private  int sodium = 0;

public Builder (int size ,int sering)
{
this.sering = sering;
this.size = size;
}

public Builder fat (int val)
{
/**
* 断言的使用
* 在语法上,为了支持assertion,Java增加了一个关键字assert。它包括两种表达式,分别如下:
* assert expression1;
   assert expression1: expression2;
   在两种表达式中,expression1表示一个boolean表达式,expression2表示一个基本类型或者是一个对象(Object)
   ,基本类型包括boolean,char,double,float,int和long。
   由于所有类都为Object的子类,因此这个参数可以用于所有对象。
   1、assert <boolean表达式>如果<boolean表达式>为true,则程序继续执行。如果为false,则程序抛出AssertionError,并终止执行。
   2、assert <boolean表达式> : <错误信息表达式>如果<boolean表达式>为true,则程序继续执行。如果为false,则程序抛出java.lang.AssertionError,并输出<错误信息表达式>。
* javac -source 1.4 AssertTest.java
   java -ea AssertTest

*/
assert val <0;
fat = val;
return this;
}
public Builder sodium (int val)
{
this.sodium = val;
return this;
}
public Nuter build ()
{
return new Nuter (this);
}
}
private Nuter (Builder buder)
{
this.size = buder.size;
this.sering = buder.sering;
this.sodium = buder.sodium;
this.fat = buder.fat;
}
}

你可能感兴趣的:(java)